J'ai été incapable de trouver de la documentation sur la méthode. Build dans Rails (j'utilise actuellement la version 2.0.2). Par expérimentation, il semble que vous pouvez utiliser la méthode build pour ajouter un enregistrement dans une relation has_many
avant que l'enregistrement ait été sauvegardé.Ruby on Rails. Comment puis-je utiliser la méthode Active Record .build dans un: appartient à la relation?
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 permettra d'économiser à la fois le chien et l'étiquette avec les clés étrangères correctement. Cela ne semble pas fonctionner dans une relation belongs_to
.
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 dans Dog
n'est pas réglé dans ce cas en raison du fait que, au moment où il est enregistré, la personne n'a pas d'identité parce que il n'a pas encore été enregistré.
Mes questions sont les suivantes:
Comment construire le travail de sorte que Rails est assez intelligent pour savoir comment sauvegarder les enregistrements dans l'ordre? Comment faire la même chose dans une relation
belongs_to
?Où puis-je trouver une documentation sur cette méthode?
Merci
En ce qui concerne la documentation, consultez les guides Rails [_ "__gVirt_NP_NNS_NNPS<__ méthodes ajoutées par' belongs_to'" _] (http://guides.rubyonrails.org/association_basics.html#methods-added-by-belongs-to) et [_ "Méthodes ajoutées par' has_one' "_] (http://guides.rubyonrails.org/association_basics.html#methods-added-by-has-one). Une documentation plus technique peut être trouvée dans les documents API: ['belongs_to'] (http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to) et [' has_one'] (http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_one). – Dennis