2012-01-10 7 views
1

after_updateコールバックを特定の設定パラメータがtrueの場合にのみ実行するようにしたい。 は、最初に私はこのようなものだった:設定パラメータでActiveRecordコールバック条件を設定してテストする

after_update :do_something 
... 

def do_something 
    return unless MyApp::Application.config.some_config 
    actualy_do_something 
end 

をしかし、私は、コールバックの割り当てを条件付きにいない理由、と思いましたか?このよう :

after_update :do_something if MyApp::Application.config.some_config 

私は完全にImはここでやって何を理解していませんが。この変更はいつですか?サーバーの再起動時のみ?この動作をテストするにはどうすればよいですか?私はちょうど設定を設定することはできません、モデルファイルは再び読み取られません。

お知らせください。

答えて

5

条件コールバックを達成する標準的な方法は、:ifにシンボル又はPROCを通過させることである。

before_create :generate_authentication_token, :if => :authentication_token_missing? 
after_destroy :deliver_thank_you_email, :if => lambda {|user| user.wants_email? } 

def authentication_token_missing? 
    authentication_token.empty? 
end 

このフォーマットはまたRails.configuration

after_update :refresh_cache, :if => :cache_available? 

def cache_available? 
    Rails.configuration.custom_cache.present? 
end 

に設定グローバルコンフィギュレーションを参照することができこれが可能になりますサーバを再起動したり、定数を削除したり、ファイルをリロードせずに変更するアプリケーションの動作。

関連する問題