質問

Railsアプリのオブザーバーを使用して、新しい「コメント」が保存されるたびに「イベント」モデルに新しいエントリを作成しようとしています。コメントは正常に保存されていますが、オブザーバーはイベントを適切に作成していません。

// comment_observer.rb
class CommentObserver < ActiveRecord::Observer
  observe :comment

  def after_save(comment)
    event = comment.user.events.create
    event.kind = "comment"
    event.data = { "comment_message" => "#{comment.message}" }
    event.save!
  end

このオブザーバーはうまく機能します私はコンソールでそれを使用していますが、適切に観察していないようです。アプリを試してみると、イベントを作成していないようです。エラーや何も表示されません。

私も持っています config.active_record.observers = :comment_observer 私の環境。rbファイル。

どこが間違っていますか?別のアプローチをとるべきですか?

役に立ちましたか?

解決

あなたはを必要としないはずです 観察する 声明あなたのクラスはcommentobserverという名前です。

除外してみてください。

または試してみてください:

observe Comment

それ以外の

observe :comment

他のヒント

確かに、あなたは必要です observe :comment コメントクラスをオブザーバー名から推測できない場合のみ(つまり、commentobserverとは呼ばれません)。

Application.RBでオブザーバーを宣言しましたか:

# Activate observers that should always be running
config.active_record.observers = :comment_observer
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top