为活动记录中的行保存一个属性

时间:2013-02-18 22:03:34

标签: ruby-on-rails rails-activerecord

在ActiveRecord中有5种方法可以为属性保存新值。不幸的是,我只能找到一种工作方式,我不确定这是最有效的方式:

review = Review.find(id)
review.status = 'ok'
review.save!

我开始使用更新方法,但出于某些奇怪的原因删除了我的评论行

review = Review.update(id, :status => 'ok)
review.save!

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

你应该使用

review = Review.find_by_id(id)
review.update_column(:status, 'ok')  

您可以看到the docs

注意:在{Rails 3.2.8

>中已弃用ActiveRecord::Base:update

答案 1 :(得分:1)

为属性保存新值的最有效方法是执行以下操作:

Review.update_attribute(id, :status => 'ok')

此后无需调用save方法,因为ActiveRecord会使用update_attribute方法自动保存值。

现在,请记住,只有在通过对象上设置的验证时,更改才有效。

点击此链接了解更多信息:

http://apidock.com/rails/ActiveRecord/Base/update/class

答案 2 :(得分:0)

应该是

review.update_attributes(status: 'ok')