2011-12-13 10 views
22

save(false)save(:validate => false)の違いは何ですか?私が知る限り、機能は同じです。 :validateを使用するバージョンはsave(false)は古いバージョンであると信じて私をリードAPIのでしょうか?これは次のときに私のために現れた:https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user。ガイドは、そこにsave(false)を持っていますが、それを使用したとき、私はエラーを得ていました。私はそれを:validateバージョンに切り替えて、うまくいきました。違いセーブ(偽)と保存の間(:検証=> false)を

答えて

30
ActiveRecord::Baseに比べ3、 save was a method前のRailsのバージョンでは

、あなたが検証を回避するために、それにfalseを渡すことができます。

ActiveRecord::PersistanceへのRails 3、 save was moved

して以来、あなたは検証を回避するために、save:validate => falseを渡す必要があります。

+0

が、それはそのようなものだと思いました、ありがとう!偽:あなたが使用したら、これは制約に違反する状態を永続化すること – Steve

+0

注意、後続のすべてのセーブも検証する必要があるでしょう。 – DylanReile

22

我々はvalidate: false

@user = User.new(....) 

@user.save(validate: false) 

アクションベース無効検証

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

スキップフィールド検証

を使用するときに、モデルからすべての検証がスキップされます10

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

クラスのユーザー<はActiveRecord ::ベース

validates_presence_of:パスワード:> =上:更新

エンド

関連する問題