Je n'ai trouvé aucune documentation sur la méthode .build dans Rails (j'utilise actuellement 2.0.2).
Grâce à l'expérimentation, il semble que vous puissiez utiliser la méthode de construction pour ajouter un enregistrement dans une has_many
relation avant que l'un ou l'autre enregistrement n'ait été enregistré.
Par exemple:
class Dog < ActiveRecord::Base
has_many :tags
belongs_to :person
end
class Person < ActiveRecord::Base
has_many :dogs
end
# rails c
d = Dog.new
d.tags.build(:number => "123456")
d.save # => true
Cela enregistrera correctement le chien et l'étiquette avec les clés étrangères. Cela ne semble pas fonctionner dans une belongs_to
relation.
d = Dog.new
d.person.build # => nil object on nil.build
J'ai aussi essayé
d = Dog.new
d.person = Person.new
d.save # => true
La clé étrangère Dog
n'est pas définie dans ce cas car au moment de son enregistrement, la nouvelle personne n'a pas d'identifiant car elle n'a pas encore été enregistrée.
Mes questions sont:
Comment la compilation fonctionne-t-elle pour que Rails soit suffisamment intelligent pour savoir comment enregistrer les enregistrements dans le bon ordre?
Comment puis-je faire la même chose dans une
belongs_to
relation?Où puis-je trouver de la documentation sur cette méthode?
Je vous remercie
belongs_to
» et «Méthodes ajoutées parhas_one
» . Plus de documentation technique peut être trouvée dans la documentation de l'API:belongs_to
ethas_one
.