我写了一个简单的定义
def sign_up_completed!
self.sign_up_completed_at = Time.now.utc
end
在rails控制台中,我尝试User.last.sign_up_completed!
。
irb(main):004:0> User.last.sign_up_completed!
User Load (0.7ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1
=> 2015-05-25 15:37:24 UTC
我必须执行以下操作才能保存:
> User.last
> u = _
> u.sign_up_completed!
> u.save
为什么会这样?
答案 0 :(得分:2)
以这种方式更改属性时,ActiveRecord不会保存。你的功能需要
def sign_up_completed!
self.sign_up_completed_at = Time.now.utc
self.save!
end
或者,您可以像这样使用update_attribute
,这将自动保存:
def sign_up_completed!
self.update_attribute :sign_up_completed_at, Time.now.utc
end
或者根本不使用函数,只需在用户模型上调用update_attribute
,但这可能不太可读:
user.update_attribute :sign_up_completed_at, Time.now.utc