2017-11-19 12 views
0

条件before_saveコールバックのメソッド呼び出しを否定するためにどのように私は、このコールバックがあります。レール5は、私のテンプレートモデルでは

before_save :set_status, if: :is_template? 

    private 

    def is_template? 
    return self.template_type == 'template' 
    end 

がどのように私はそれを変更することができますしているので、それだけの火災で、template_typeではない「テンプレート'?

私はこれらを試してみました:

1 before_save :set_status, if: !:is_template? 
2 before_save :set_status, if: !(:is_template?) 

彼ら原因 'メソッドbefore_saveが見つかりません' というエラーの両方。

before_save :set_status, if: Proc.new {|model| !model.is_template? } 

しかし、それは、このような単純なケースのためにやり過ぎと思われる:

this questionを読んでたので、私もこれを試してみました。

実際にこれを動作させるには別の方法:is_not_template?を書き込む必要がありますか?

+1

は試してみてください 'before_save:set_status、しない限り:?is_template';) – DivXZero

+0

@DivXZeroだから、明らかにあなたがそれを見たとき。私は約忘れている!どうもありがとうございます!答えとして投稿してください、私はそれをマークします。 – rmcsharry

答えて

1

before_save :set_status, unless: :is_template?てみてください。)

関連する問題