Rails Observer funktioniert nicht
-
04-10-2019 - |
Frage
Ich versuche zu verwenden Beobachter in meinem Rails-Anwendung einen neuen Eintrag in meinem „Event“ Modell jedes Mal ein neues „Comment“ gespeichert zu erstellen. Die Kommentare sparen in Ordnung, aber der Beobachter nicht Ereignisse richtig zu schaffen.
// 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
Dieser Beobachter funktioniert gut Ich benutze es in der Konsole, aber es scheint nicht richtig beobachtet werden; wenn ich meine app versuchen, es scheint nicht nur Ereignisse zu erstellen. Ich sehe nicht, Fehler oder nichts.
Auch habe ich config.active_record.observers = :comment_observer
in meiner environment.rb Datei.
Wohin gehe ich falsch? Soll ich einen anderen Ansatz nehmen?
Lösung
Sie sollten nicht brauchen die die beobachten Erklärung, da Ihre Klasse CommentObserver benannt.
Versuchenes auszulassen.
Oder versuchen:
observe Comment
statt
observe :comment
Andere Tipps
Tatsächlich braucht man observe :comment
nur, wenn Kommentar Klasse kann nicht vom Beobachter Namen abgeleitet wird (das heißt, nicht CommentObserver genannt).
Haben Sie Ihren Beobachter in application.rb deklarieren:
# Activate observers that should always be running
config.active_record.observers = :comment_observer