Non sono stato in grado di trovare alcuna documentazione sul metodo .build in Rails (attualmente sto usando 2.0.2).
Attraverso la sperimentazione sembra che tu possa usare il metodo build per aggiungere un record in una has_manyrelazione prima che entrambi i record siano stati salvati.
Per esempio:
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
Ciò salverà correttamente sia il cane che il tag con le chiavi esterne. Questo non sembra funzionare in una belongs_torelazione.
d = Dog.new
d.person.build # => nil object on nil.build
Ho anche provato
d = Dog.new
d.person = Person.new
d.save # => true
In Dogquesto caso la chiave esterna non è impostata a causa del fatto che al momento del salvataggio la nuova persona non ha un ID perché non è stata ancora salvata.
Le mie domande sono:
Come funziona build in modo che Rails sia abbastanza intelligente da capire come salvare i record nell'ordine giusto?
Come posso fare la stessa cosa in a
belongs_torelazione?Dove posso trovare documentazione su questo metodo?
Grazie
belongs_to" e "Metodi aggiunti dahas_one" . Ulteriori documentazione tecnica è disponibile nei documenti API:belongs_toehas_one.