【问题标题】:Rails: update multiple attributes without validation, 1 sql transactionRails:更新多个属性而无需验证,1个sql事务
【发布时间】:2012-05-07 15:30:30
【问题描述】:

我知道在 Rails 中你可以调用model.update_attribute :foo, 'bar',它只会更新数据库中的一个属性,而不验证模型的其余部分。这会导致一个 SQL 事务。

您还可以使用.update_attributes 设置多个属性,但这不能跳过验证。

或者,您可以致电.save( :validate=>false ) 并在不进行验证的情况下更新模型。但是,这会将模型上的所有属性保存为当前状态,而不是将其限制为某些列。

我的问题是,有没有办法在一个 SQL 事务中在一个模型上设置多个值,但不是全部,而不触发验证?

【问题讨论】:

    标签: sql ruby-on-rails activerecord


    【解决方案1】:

    你为什么不直接设置属性,然后用:validate => false调用save

    @record.attributes = your_hash # won't nil non-mentioned attributes, as you expect it to
    @record.save :validate => false
    

    【讨论】:

    • 好的,但是假设用户通过表单进行交互,我希望他们基本上能够在模型处于草稿状态并且可能无效时设置“分类”属性。如果您调用 save(false) 则设置的任何其他 attrs 也将被保存...
    • ...我猜你是说将属性分割成只有你想在哈希中设置的那些?这可能行得通...
    猜你喜欢
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多