如何从Model更新模型属性?

时间:2014-09-09 17:33:51

标签: ruby-on-rails ruby ruby-on-rails-4

我有一种方法可以在其模型中更改用户状态,是否可以在用户模型中使用此类操作:

class User < ActiveRecord::Base

def confirm!
  super
  self.update_column(:status => "active")
end

end

我看到了这两个例子;

Rails update_attribute

how to update attributes in self model rails

无法完全找到哪一个!

1 个答案:

答案 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