私たちは param argでうまく動作するdependent: destroy
のaccepts_nested_attributes_for
を持っています。破壊時に子モデルの検証に失敗するのはなぜaccepts_nested_attributes_forですか?
子に検証を追加しました。これは期待どおりに動作します。
しかし、2つを組み合わせると、親のsaveは、falseを返すのではなく、未処理のエラーをスローします。エラーが空または存在すると、両方の場合において
class Foo < ActiveRecord::Base
accepts_nested_attributes_for :bars, allow_destroy: true
...
end
class Bar < ActiveRecord::Base
before_destroy :can_do?
def can_do?
unless yeah_sure
errors.add(:base, I18n.t("the.translation"))
false
end
end
...
end
bar_spec
試験yeah_sure
、(正しいメッセージがそこにあります)。
レール部分を踏んだとき、active_supportとトランザクションで3つのレベルのキャッチ、ロールバック/クリーンアップ、リリースがあります。
また、コントローラでは、メソッドレベルと開始ブロックの両方をレスキューしようとしましたが、どちらもエラーをトラップしていません。これは奇妙です。
なぜfoo.save
がfalseを返す代わりにエラーを投げているのですか?
のRails 4.2.10
あなたの 'Bar'エンティティは' Foo'の子であり、親ではありません。理解を容易にするためにログトレースを追加してください。 – yeuem1vannam