【发布时间】:2011-01-27 17:01:59
【问题描述】:
切换布尔属性(例如取消/发布文章)的最佳做法是什么?
对于模特方面,我看到Object.update_attribute(:only_one_field, 'my_value') 最适合这项工作,而不是update_attributes。
怎么样
- 视图(使用链接、表单中的提交按钮、其他想法?)和
- Controller 端?
【问题讨论】:
切换布尔属性(例如取消/发布文章)的最佳做法是什么?
对于模特方面,我看到Object.update_attribute(:only_one_field, 'my_value') 最适合这项工作,而不是update_attributes。
怎么样
【问题讨论】:
视图通常使用表单来更新模型。 form_for helper 让这变得非常简单。
如果您使用标准更新操作(您的控制器继承自 InheritedResources::Base),那么您的更新!你的控制器中的方法应该可以很好地处理这个问题。
我实际上建议不要使用Model.update_attribute(:published, value),除非你知道这个调用会绕过你的模型的验证。这通常是为什么表单只是发布到控制器中的更新或创建方法的原因——默认情况下,这些方法会经历整个 ActiveRecord 生命周期,也会调用您的验证。如果你有理由绕过它们,那么一定要使用update_attribute。
【讨论】:
update_attribute 更新 [...] 并保存记录而无需通过正常的验证过程。这对于现有记录上的布尔标志特别有用。这就是为什么我认为它最适合这种情况。