Railsオブザーバーが機能していません
-
04-10-2019 - |
質問
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
所属していません StackOverflow