Ruby on rails 如何从模型更新模型属性?

Ruby on rails 如何从模型更新模型属性?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有一种在it模型内更改用户状态的方法,是否可以使用此方法在用户模型内执行类似操作: class User < ActiveRecord::Base def confirm! super self.update_column(:status => "active") end end class用户“active”) 结束 结束 我看到这两个例子, 我不知道该选哪一个 这取决于您是否希望在模型中运行任何验证更新属性将不会运行验证,但更新属性将运行验证。这里有几个例子

我有一种在it模型内更改用户状态的方法,是否可以使用此方法在用户模型内执行类似操作:

class User < ActiveRecord::Base

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

end
class用户“active”)
结束
结束
我看到这两个例子,


我不知道该选哪一个

这取决于您是否希望在模型中运行任何验证<代码>更新属性将不会运行验证,但
更新属性
将运行验证。这里有几个例子

使用
更新\u属性

class User < ActiveRecord::Base
  validates :email, presence: true

  def confirm!
    update_attributes(status: 'active')
  end
end
使用
更新\u属性

class User < ActiveRecord::Base
  validates :email, presence: true

  def confirm!
    update_attribute(:status, 'active')
  end
end

这两个都是很好的解决方案-你能澄清你的问题,说明为什么你对这两个问题感到困惑,以及你想明确澄清什么吗?当你尝试它时发生了什么?哇,谢谢,我会马上尝试,谢谢你的详细答案@观察者不确定这里是否真的应用了bang(
)方法。请查看这些方法在
ruby
Rails
中是如何工作的。我想如果你想要一个
确认
则在出现错误时,此操作应
升高
,然后还创建一个
确认
,该确认不升高,而是返回一个
布尔值
。查看
save
vs
save作为示例。
class User < ActiveRecord::Base
  validates :email, presence: true

  def confirm!
    update_attribute(:status, 'active')
  end
end
user = User.new
user.confirm! # returns true