Non riesco a trovare alcuna documentazione sul metodo .build in Rails (sto attualmente utilizzando 2.0.2).Ruby on Rails. Come utilizzare il metodo Active Record .build in a: appartiene alla relazione?
Attraverso la sperimentazione sembra possibile utilizzare il metodo di compilazione per aggiungere un record in una relazione has_many
prima che uno dei due record sia stato salvato.
Ad 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ò farà risparmiare sia il cane e tag con le chiavi esterne correttamente. Non sembra funzionare in una relazione belongs_to
.
d = Dog.new
d.person.build # => nil object on nil.build
ho anche provato
d = Dog.new
d.person = Person.new
d.save # => true
La chiave esterna in Dog
non è impostato in questo caso dovuto al fatto che al momento in cui viene salvata, la nuova persona non ha un id perché non è stato ancora salvato.
Le mie domande sono:
Come si fa a costruire lavoro in modo che Rails è abbastanza intelligente per capire come salvare i record nel giusto ordine?
Come posso fare la stessa cosa in una relazione
belongs_to
?Dove è possibile trovare documentazione su questo metodo?
Grazie
Per quanto riguarda la documentazione, vedere le Guide Rails [_ "metodi aggiunti da' belongs_to'" _] (http://guides.rubyonrails.org/association_basics.html#methods-added-by-belongs-to) e [_ "Metodi aggiunti da' has_one' "_] (http://guides.rubyonrails.org/association_basics.html#methods-added-by-has-one). Più documentazione tecnica può essere trovata nei documenti API: ['belongs_to'] (http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to) e [' has_one'] (http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_one). – Dennis