2012-02-22 4 views
2

私が実装したモデルは、フィールドの1つをHTMLに適した入力テキストにエスケープ/フォーマットする必要があります(引数として、青/赤い布のようなもの)。Rails:モデルにオブザーバがあることを示す

私はbefore_saveコールバックを使用してこれをオブザーバで実装しました。すべて動作し、苦情はありません。私はコードとしてレールを学習しており、モデルを見るだけでオブザーバーがあるという兆候はないことがわかりました。

モデルがオブザーバを持っている、またはコメント内で(またはまったく)これを行うべきであることを示す(コードを表示/編集できる他のプログラマのための)きれいな方法がありますか?

答えて

1

私が知る限り、対象のクラス/モデルにオブザーバーがあることを指定する必要はありません。オブザーバーが観察しているモデルをオブザーバーにリストさせることだけです。

class ContentObserver < ActiveRecord::Observer 
    observe :answer, :audio_clip, :document 
    #This right here^

    def after_update(record) 
    record.recent_activity.save! 
    end 
end 
+0

返事をいただきありがとうございます。私はここであなたのコードを使用して、単一のオブザーバにいくつかのモデル/非推測モデルのコールバックを発動させることができます。モデルの視点から、回答モデルが純粋に答えモデルコードを見てこのコールバックを起動することを理解する方法はありません(あなたの例から)。私は方法があるかどうか疑問に思っていました。私はちょうどコードにコメントをつけるつもりだと思う。 –

0

オブザーバー用のスペック/テストファイルがあります。将来、誰かがオブザーバーを混乱させるような形でモデルを変更した場合、スペック/テストは失敗して警告を発します。

関連する問題