Jan Roesner wrote:
Callbacks scheiden in meinem Falle aus, da ich keinen Callback
'after_read' oder 'after_find' finde, ich ausserdem hinterher aus dem
Model auch ein Plugin acts_as_foobar abstrahieren möchte, von dessen
Klassen neue Klassen wiederum erben (und somit auch meine angepasste
save und find).
Hallo Jan,
wie schon korrekt gesagt wurde, gibt es after_update und after_create.
Es gibt auch ein after_find und after_initialize. Dubioserweise wird
after_initialize auch nach find Aufrufen getriggert, aber after_find
sollte dir weiterhelfen. Aus Performance Gründen muss man after_find
direkt auf den model klassen definieren, im gegensatz zu den anderen
callbacks. das bedeutet einfach, dass du
> def after_find
> # code
> end
in deinem AR Model definieren musst.
Falls Du Attribut-weise arbeiten willst: da hatte ich es immer so
gemacht dass ich read_attribute bzw write_attribute genutzt habe. etwa so:
class Test < AR::Base
def read_attribute_with_cool_feature(attr_name)
do.cool.stuff(attr_name)
read_attribute_without_cool_feature(attr_name)
end
alias_method_chain :read_attribute, :cool_feature
end
Funktioniert auch wunderbar wenn man code im plugin style schreiben möchte.
Callbacks sind auf jeden fall ein besserer Ansatz als save/create/find
zu überschreiben.
Du solltest auch anstatt mit Vererbung dann eher mit Modules oder gar
Macro Methoden arbeiten, wenn Du das zu einem Plugin machen willst. Dazu
siehst Du in den meisten guten Plugins guten Code den man sich abgucken
kann, zB bei acts_as_versioned.
Gruß
Thomas
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug