1

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

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

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

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

有任何想法吗?

4

3 回答 3

4

你应该使用

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

你能看到文档吗?

注意:ActiveRecord::Base:update在 Rails 3.2.8 中已弃用

于 2013-02-18T22:27:17.367 回答
1

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

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

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

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

查看此链接了解更多信息:

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

于 2013-02-18T22:12:32.383 回答
0

它应该是

review.update_attributes(status: 'ok')

于 2013-02-18T22:36:50.777 回答