我有一种方法可以在其模型中更改用户状态,是否可以在用户模型中使用此类操作:
class User < ActiveRecord::Base
def confirm!
super
self.update_column(:status => "active")
end
end
我看到了这两个例子;
how to update attributes in self model rails
无法完全找到哪一个!
答案 0 :(得分:2)
这取决于您是否希望模型中的任何验证运行。 update_attribute
不会运行验证,但会update_attributes
。这里有几个例子。
使用update_attributes
:
class User < ActiveRecord::Base
validates :email, presence: true
def confirm!
update_attributes(status: 'active')
end
end
以下内容将返回false
并且不会更新记录,因为未设置电子邮件:
user = User.new
user.confirm! # returns false
使用update_attribute
:
class User < ActiveRecord::Base
validates :email, presence: true
def confirm!
update_attribute(:status, 'active')
end
end
无论是否已设置电子邮件,以下内容都会将状态更新为活动:
user = User.new
user.confirm! # returns true