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_many
relazione 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_to
relazione.
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 Dog
questo 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_to
relazione?Dove posso trovare documentazione su questo metodo?
Grazie
belongs_to
" e "Metodi aggiunti dahas_one
" . Ulteriori documentazione tecnica è disponibile nei documenti API:belongs_to
ehas_one
.