Ruby on rails 如何从模型更新模型属性?
我有一种在it模型内更改用户状态的方法,是否可以使用此方法在用户模型内执行类似操作: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”) 结束 结束 我看到这两个例子, 我不知道该选哪一个 这取决于您是否希望在模型中运行任何验证更新属性将不会运行验证,但更新属性将运行验证。这里有几个例子
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
vssave代码>作为示例。
class User < ActiveRecord::Base
validates :email, presence: true
def confirm!
update_attribute(:status, 'active')
end
end
user = User.new
user.confirm! # returns true