ruby-on-rails-4 – Rails 4模型总是返回nil
发布时间:2020-12-17 04:01:28 所属栏目:百科 来源:网络整理
导读:我对以下错误感到疯狂.我有一个User类,它的两个属性(birthday created_at = datetime)总是返回nil,除了它在数据库上有一个值. 我正在使用devise来管理身份验证. 这是db表: CREATE TABLE users( id serial NOT NULL,email character varying(255) NOT NULL D
我对以下错误感到疯狂.我有一个User类,它的两个属性(birthday& created_at => datetime)总是返回nil,除了它在数据库上有一个值.
我正在使用devise来管理身份验证. 这是db表: CREATE TABLE users ( id serial NOT NULL,email character varying(255) NOT NULL DEFAULT ''::character varying,encrypted_password character varying(255) NOT NULL DEFAULT ''::character varying,reset_password_token character varying(255),reset_password_sent_at timestamp without time zone,remember_created_at timestamp without time zone,sign_in_count integer NOT NULL DEFAULT 0,current_sign_in_at timestamp without time zone,last_sign_in_at timestamp without time zone,current_sign_in_ip character varying(255),last_sign_in_ip character varying(255),name character varying(255),lastname character varying(255),birthday timestamp without time zone,gender character varying(255),created_at timestamp without time zone,updated_at timestamp without time zone,authentication_token character varying(255),facebook_uid character varying(255),gplus_uid character varying(255),CONSTRAINT users_pkey PRIMARY KEY (id) ) WITH ( OIDS=FALSE ); 这就是模型 #encoding: utf-8 class User < ActiveRecord::Base has_many :user_benefits has_many :benefits,through: :user_benefits devise :database_authenticatable,:registerable,:recoverable,:rememberable,:trackable,:validatable validates :gender,:inclusion => { :in => %w(m f)} validates :email,email_format: { message: "Email invalido" } before_save :ensure_authentication_token def ensure_authentication_token if authentication_token.blank? self.authentication_token = generate_authentication_token end end def set_gender new_gender case new_gender.downcase when "male" self.gender = 'm' when "female" self.gender = 'f' when "m" self.gender = 'm' when "f" self.gender = 'f' else self.gender = nil end end def get_response { :auth_token=>self.authentication_token,:user => { :email=> self.email,:name=> self.name,:lastname=> self.lastname,:birthday=> self.birthday,:gender=> self.gender,:auth_token=> self.authentication_token,:created_at=> self.created_at,:updated_at=> self.updated_at,:facebook_uid=> self.facebook_uid,:gplus_uid=> self.gplus_uid } } end private def generate_authentication_token loop do token = Devise.friendly_token break token unless User.where(authentication_token: token).first end end end 当我打电话给get_response时,我得到了: { auth_token: "fRoi1RPTuP64m55jXCSS" user: { email: "testg@habitues.com" name: "Lalo" lastname: "Landa" birthday: null gender: "m" auth_token: "fRoi1RPTuP64m55jXCSS" created_at: null updated_at: "2013-11-27T20:14:22.534-03:00" facebook_uid: null gplus_uid: null } new: false } 有人有想法吗? 谢谢 解决方法
config.active_record.default_timezone需要一个符号:local或:utc.
config.time_zone需要一个常规的时区. config.active_record.default_timezone确定从数据库中提取日期和时间时是否使用Time.local(如果设置为:local)或Time.utc(如果设置为:utc).默认值为:utc. http://guides.rubyonrails.org/configuring.html#configuring-active-record (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |