Ich konnte keine Dokumentation zur .build-Methode in Rails finden (ich verwende derzeit 2.0.2).
Durch Experimentieren können Sie anscheinend die Erstellungsmethode verwenden, um einen Datensatz zu einer has_many
Beziehung hinzuzufügen, bevor einer der Datensätze gespeichert wurde.
Beispielsweise:
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
Dadurch werden sowohl der Hund als auch die Markierung mit den Fremdschlüsseln ordnungsgemäß gespeichert. Dies scheint in einer belongs_to
Beziehung nicht zu funktionieren .
d = Dog.new
d.person.build # => nil object on nil.build
Ich habe es auch versucht
d = Dog.new
d.person = Person.new
d.save # => true
Der Fremdschlüssel Dog
wird in diesem Fall nicht festgelegt, da die neue Person zum Zeitpunkt des Speicherns keine ID hat, da er noch nicht gespeichert wurde.
Meine Fragen sind:
Wie funktioniert Build, damit Rails intelligent genug ist, um herauszufinden, wie die Datensätze in der richtigen Reihenfolge gespeichert werden können?
Wie kann ich in einer
belongs_to
Beziehung dasselbe tun ?Wo finde ich Dokumentation zu dieser Methode?
Danke dir
belongs_to
" und "Methoden hinzugefügt vonhas_one
" . Weitere technische Dokumentationen finden Sie in den API-Dokumenten:belongs_to
undhas_one
.