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?

War es hilfreich?

Lösung

Sie sollten nicht brauchen die die beobachten Erklärung, da Ihre Klasse CommentObserver benannt.

Versuchen

es 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top