3

.saveがfalseを返すモデルオブジェクトがあります。その後、空のハッシュである.errorsプロパティがあります。ハッシュに問題のリストを含めるべきではありませんか?保存が機能しない理由を他にどのように判断できますか?

TY、フレッド

4

2 に答える 2

11

これは、コールバックの 1 つがおそらく保存を停止しているが、検証エラーをリストしていないことを意味します。

特にbefore_コールバックの戻り値を確認し、それらが返されていないことを確認しますfalse

それらが を返す場合false、アクティブ レコードは今後のコールバックを停止し、保存から false を返します。

それについては、こちらの「コールバックのキャンセル」の下で少し読むことができます

于 2013-01-30T00:57:17.373 に答える
2

1) before_create、before_save、before_updateを無効にして、その日の保存場所を確認する

2) ロールバックがこれらのメソッドのいずれかによって引き起こされた場合は、ロールバックする予定がない場合にそれらのメソッドが true を返すことを確認してください。

たとえば、boolean フィールドのデフォルト値を nil を回避するように設定する場合、おそらくこのようにするでしょう。

def set_defaults_before_create
  self.my_boolean_field ||= false
end

この例では、メソッドset_defaults_before_createは常にfalseを返すため、トランザクションをロールバックします。したがって、trueを返すようにリファクタリングします

def set_defaults_before_create
  self.my_boolean_field ||= false
  true
end
于 2013-10-04T17:02:52.847 に答える