3

before_save コールバック メソッドを使用して、他の属性の数が 0 でない場合に属性を true に設定しています。モデルを更新するとコールバックが呼び出されますが、余分な属性が設定されていません。その属性が更新メソッドに渡されていないためだと思います。どうすればそれを回避できますか?

コントローラ

@blog.update(blog_params)

モデル

before_save do
  self.indicator = true unless attribute_1 == "0" && attribute_2 == "0"
end
4

2 に答える 2

5

before_validation代わりに使用することを検討してください。Rails は を呼び出すbefore_validation前にコールバックを呼び出しbefore_saveます。そのため、値を設定していることを確認する必要がある場合は、その場所で行います。

于 2013-10-31T13:26:24.950 に答える
3

true結局コードを入れてみる

before_save do
  self.indicator = true unless attribute_1 == "0" && attribute_2 == "0"
  true
end

すべてのコールバックは、何らかの方法で true を返す必要があります

于 2013-10-31T13:24:55.007 に答える