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