Hi Liste, hier ist mein Szenario: - Auf einem User < ActiveRecord ist ein UserObserver < ActiveRecord::Observer definiert, der bei create und save jeweils mails generiert - das soll er auch in 9 von 10 Fällen tun: Nur in einem Fall möchte ich das generieren von E-Mails unterdrücken Kennt da jemand einen Schalter, mit dem man Observer aus- und wieder anstellen kann? Meine zweite Idee wäre gewesen, das über Anwendungslogik im Model/Observer zu machen (ein nicht persistentes Attribut generate_email im User), aber so eine Art User.deactivate_observers/activate_observers wäre einfacher... Viele GrüßeStefan _______________________________________________ rubyonrails-ug mailing list rubyonrails-ug@headflash.com http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
on 16.05.2008 09:25
on 16.05.2008 10:26
Hallo Stefan.
Die Bedingung für das Versenden von Mails ist Geschäftslogik
(Abhängigkeit
von einem Attribut?), nehme ich mal an. Daher sollte es auch im Modell
entsprechend hinterlegt sein.
Im Observer kannst Du einfach diese Bedingung überprüfen und
entsprechend
die Mail versenden oder nicht. Also in etwa so:
class UserObserver < ActiveRecord::Observer
observe :user
def after_create(user)
UserNotifier.deliver_notification(user) if user.notification?
end
def after_save(user)
UserNotifier.deliver_notification(user) if user.notification?
end
end
Viele Grüße
Nicolai
on 16.05.2008 10:54
ja, das ist jetzt in dem Fall wohl wirklich sinniger. Aber der Schalter würde mich trotzdem interessieren - wir haben das für einen Import über das auskommentieren von config.active_record.observers = :user_observer in der environment.rb gemacht - und dann im Eifer des Gefechts das einkommentieren vergessen: Da ich also für den Import nicht unbedingt Geschäftslogik schreiben wollte, wär's da schon nützlich, wenn ich für solch einen Import die Observer auch programmatisch abstellen könnte... grüßestefan Am 16.05.2008 um 10:25 schrieb Codeblogger: