save(false)
和save(:validate => false)
之间有什么区别?据我所知,功能是一样的。使用:validate
的版本在api中,这让我相信save(false)
是一个弃用的版本?在我这样做时,我想到了这一点:https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user。该指南中有save(false)
但我在使用它时遇到错误。我将其切换到:validate
版本并且运行正常。
答案 0 :(得分:37)
在3之前的Rails版本中,save
中的ActiveRecord::Base
was a method,您可以将false
传递给它,以绕过验证。
在Rails 3中,save
was moved到ActiveRecord::Persistance
,然后您应该将:validate => false
传递给save
以绕过验证。
答案 1 :(得分:27)
当我们使用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
实施例
class User<的ActiveRecord ::基
validates_presence_of:password,:on => :更新
端