Ruby on rails 3 Rails 3修改布尔属性的最佳实践?

Ruby on rails 3 Rails 3修改布尔属性的最佳实践?,ruby-on-rails-3,boolean,Ruby On Rails 3,Boolean,切换布尔属性(例如,取消/发布文章)的最佳做法是什么 在模型方面,我看到了Object.update\u属性(:只有一个字段,'my\u value')最适合这个工作,而不是update\u属性 那怎么办 视图(使用链接、表单中的提交按钮、其他想法?)和 控制器端 视图通常使用表单来更新模型。这一点非常简单 如果您使用的是标准更新操作(您的控制器继承自InheritedResources::Base),那么您的更新!控制器中的方法应该可以处理这个问题 实际上,我建议不要使用Model.updat

切换布尔属性(例如,取消/发布文章)的最佳做法是什么

在模型方面,我看到了
Object.update\u属性(:只有一个字段,'my\u value')
最适合这个工作,而不是
update\u属性

那怎么办

  • 视图(使用链接、表单中的提交按钮、其他想法?)和
  • 控制器端
  • 视图通常使用表单来更新模型。这一点非常简单

  • 如果您使用的是标准更新操作(您的控制器继承自
    InheritedResources::Base
    ),那么您的更新!控制器中的方法应该可以处理这个问题

  • 实际上,我建议不要使用
    Model.update\u属性(:published,value)
    ,除非您知道此调用绕过了模型的验证。这就是为什么表单只是发布到控制器中的更新或创建方法——默认情况下,这些方法贯穿整个ActiveRecord生命周期,并调用您的验证。如果您有理由绕过它们,请务必使用
    update\u attribute

  • 视图通常使用表单来更新模型。这一点非常简单

  • 如果您使用的是标准更新操作(您的控制器继承自
    InheritedResources::Base
    ),那么您的更新!控制器中的方法应该可以处理这个问题


  • 实际上,我建议不要使用
    Model.update\u属性(:published,value)
    ,除非您知道此调用绕过了模型的验证。这就是为什么表单只是发布到控制器中的更新或创建方法——默认情况下,这些方法贯穿整个ActiveRecord生命周期,并调用您的验证。如果您有理由绕过它们,那么请务必使用
    update\u attribute

    Yes,注意绕过验证:Rails API说
    update\u attribute
    更新[…]并保存记录,而无需经过正常的验证过程。这对于现有记录上的布尔标志尤其有用。这就是为什么我认为它最适合这种情况。是的,注意到绕过验证:Rails API说,
    update\u属性
    updates[…]并在不经过正常验证过程的情况下保存记录。这对于现有记录上的布尔标志尤其有用。这就是为什么我认为它最适合这种情况。