2012-07-03 10 views
5

Rails 2とRails 3の両方で:autosave => trueの場合、has_manyの関連付けが行われ、コレクションはループされ、save(:validate => false)児童協会。何故ですか?その子オブジェクトに対して実行するbefore_validationコールバックが必要ですが、検証をスキップするセーブではありません。has_many:autosave => true子を保存するときの検証をスキップする

どうすればよいですか?検証をスキップする目的は何ですか?

ご協力いただければ幸いです。ありがとう!

答えて

6

検証doが実行されます。検証段階と保存段階があります。オートセーブは、2つのモデルの2つのフェーズを同時に実行しようとします。したがって、親モデルを保存すると、親モデルが検証され、子モデルの自動保存が検証されます。バリデーションが合格すると、親モデルを保存して子モデルを保存する保存フェーズが実行されます(ただし、検証はスキップされます)。理由は、検証が既に実行されているためです。

before_saveコールバック中に親モデル内に子モデルを作成しようとしたときに問題が発生しました。したがって、関連するオブジェクトは、検証フェーズ中に検証されることはありませんでした。

関連する問題