【问题标题】:Difference between save(false) and save(:validate => false)save(false) 和 save(:validate => false) 之间的区别
【发布时间】:2011-12-13 06:03:07
【问题描述】:

save(false)save(:validate => false) 有什么区别?据我所知,功能是相同的。使用:validate 的版本在api 中,这让我相信save(false) 是一个已弃用的版本?当我关注这个时,我想到了这个:https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user。该指南中有save(false),但我在使用它时遇到了错误。我将它切换到:validate 版本,效果很好。

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

    在 3 之前的 Rails 版本中,save was a methodActiveRecord::Base 中,您可以将 false 传递给它以绕过验证。

    在 Rails 3 中,save was movedActiveRecord::Persistance 之后,您应该将 :validate => false 传递到 save 以绕过验证。

    【讨论】:

    • 请注意,一旦您使用它来保存违反约束的状态,所有后续保存也需要 validate: false。
    【解决方案2】:

    当我们使用validate: false时,所有来自模型的验证都会被跳过

    @user = User.new(....)
    
    @user.save(validate: false)
    

    动作库禁用验证

    http://www.dan-manges.com/blog/action-dependent-validations-and-why-on-update-is-bad

    跳过字段验证

    https://richonrails.com/articles/skipping-validations-in-ruby-on-rails

    示例

    类用户<:base>

    validates_presence_of :password, :on => :update

    结束

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 2019-03-23
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多