Comment utiliser le after_initialize " dans Rails 3?

Mise à JOUR

J'ai tort vérifié le edgerails guide au lieu de la corriger Rails 3 guide (qui n'a aucune mention de after_initialize). Je ne sais pas pourquoi le edgerails guide est "incorrect" si - je pensais que edgerails guide était censé être le dernier à jour du guide?

Je pars de cette question-est, juste au cas où quelqu'un vient les chercher pour le même "problème".

Macro-style appel à after_initialize est le chemin à parcourir.



Devrait after_initialize être utilisée comme méthode ou macro-style appel ?

Cela fonctionne, mais donne une dépréciation avertissement:

def after_initialize
  logger.info "Called after_initialize"
end

AUTODÉRISION AVERTISSEMENT: Base#after_initialize a été abandonné,
veuillez utiliser la Base.after_initialize :méthode à la place.

Cela fonctionne, et il n'y a pas d'avertissement:

after_initialize :do_this_after_initialize
def do_this_after_initialize
  logger.info "Called after_initialize"
end

Mais la Active Record des Validations et des Rappels Guide dans 10.4 after_initialize et after_find dit:

...Si vous essayez d'enregistrer
after_initialize ou after_find à l'aide de
macro-style méthodes de la classe, ils vont
juste être ignoré. Ce comportement est
pour des raisons de performances, depuis
after_initialize et after_find va
les deux être appelée pour chaque enregistrement
dans la base de données, ralentir considérablement
en bas de la requêtes...

Cela signifie donc que la macro-style d'utilisation est inefficace par rapport à la méthode de style de la sorte?

(Je deviner le guide est faux, parce que le code est roi :D)


Une Autre Mise À Jour


Un s'engager ici du 28 janvier 2011, suggère que la bonne manière est toujours à utiliser les macro-style appel, pas un def after_initialize.

  • Je suis en utilisant after_initialize par exemple pour les immeubles associations. Un exemple after_initialize :build_text, :à moins d' => :le texte. Très utile lors de l'utilisation accepts_nested_attributes_for
  • Voici une mise à jour du lien pour les Rails 4 guide sur after_initialize
InformationsquelleAutor Zabba | 2011-02-05