save(false)和save(:validate => false)之间的区别

时间:2011-12-13 06:03:08

标签: ruby-on-rails devise

save(false)save(:validate => false)之间有什么区别?据我所知,功能是一样的。使用:validate的版本在api中,这让我相信save(false)是一个弃用的版本?在我这样做时,我想到了这一点:https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user。该指南中有save(false)但我在使用它时遇到错误。我将其切换到:validate版本并且运行正常。

2 个答案:

答案 0 :(得分:37)

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

在Rails 3中,save was movedActiveRecord::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 => :更新