【问题标题】:Updating a model with validations Rails 3.2使用验证更新模型 Rails 3.2
【发布时间】:2018-09-16 17:48:14
【问题描述】:

如何通过所有必要的验证来更新 rails 中的记录?据我所知

record.update_attributes(update_hash) 

将跳过所有验证。 如何在不跳过验证的情况下更新我的记录?顺便说一句,我使用的是 Rails 3.2。

【问题讨论】:

  • 是否使用了 record.assign_attributes(update_hash).save 正确的方法?

标签: ruby-on-rails ruby-on-rails-3 rails-activerecord activemodel


【解决方案1】:

在 Rails 3.2 中,方法 update_attributes 运行所有模型验证,只有 单数形式 update_attribute 跳过验证。幸运的是,在 Rails 4 中,他们弃用了后者,转而支持 update_column (see commit)。

文档:

【讨论】:

    【解决方案2】:

    update_attributes 自己检查验证。 如果无法保存(由于验证错误或错误查询),则返回 false。

    在内部 update_attributes 实际上调用 save 方法本身,该方法在保存到数据库之前检查验证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多