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
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
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
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: