Мені не вдалося знайти жодної документації щодо методу .build в Rails (я зараз використовую 2.0.2).
Завдяки експериментуванню, здається, ви можете використовувати метод збирання, щоб додати запис у has_many
відносини, перш ніж будь-який запис був збережений.
Наприклад:
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
Це дозволить зберегти як собаку, так і теги за допомогою іноземних ключів належним чином. Схоже, це не працює у belongs_to
стосунках.
d = Dog.new
d.person.build # => nil object on nil.build
Я також спробував
d = Dog.new
d.person = Person.new
d.save # => true
Іноземний ключ у Dog
цьому випадку не встановлений через те, що під час його збереження нова особа не має ідентифікатора, оскільки її ще не збережено.
Мої запитання:
Як працює побудова, щоб Rails був досить розумним, щоб зрозуміти, як зберегти записи в потрібному порядку?
Як я можу зробити те саме у
belongs_to
відносинах?Де я можу знайти будь-яку документацію щодо цього методу?
Дякую
belongs_to
" та "Методи, доданіhas_one
" . Більше технічної документації можна знайти в документах API:belongs_to
таhas_one
.