Мне не удалось найти какую-либо документацию по методу .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
?
Где найти документацию по этому методу?
Спасибо