Nie mogłem znaleźć żadnej dokumentacji na temat metody .build w Railsach (obecnie używam 2.0.2).
Wydaje się, że dzięki eksperymentom można użyć metody budowania, aby dodać rekord do has_many
relacji, zanim którykolwiek z nich zostanie zapisany.
Na przykład:
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
Pozwoli to poprawnie zapisać zarówno psa, jak i tag z kluczami obcymi. To nie wydaje się działać w belongs_to
związku.
d = Dog.new
d.person.build # => nil object on nil.build
Ja też próbowałem
d = Dog.new
d.person = Person.new
d.save # => true
Klucz obcy Dog
w tym przypadku nie jest ustawiony ze względu na fakt, że w momencie jego zapisywania nowa osoba nie ma identyfikatora, ponieważ nie został on jeszcze zapisany.
Moje pytania to:
Jak działa kompilacja, aby Railsy były wystarczająco sprytne, aby dowiedzieć się, jak zapisać rekordy we właściwej kolejności?
Jak mogę zrobić to samo w
belongs_to
związku?Gdzie mogę znaleźć dokumentację dotyczącą tej metody?
Dziękuję Ci
belongs_to
” i „Metody dodane przezhas_one
” . Więcej dokumentacji technicznej można znaleźć w dokumentacji API:belongs_to
ihas_one
.