[Ruby-On-Rails] Рубин на рельсах. Как использовать метод Active Record .build в: относится к отношениям?


Answers

@article = user.articles.build(:title => "MainTitle")
@article.save
Question

Я не смог найти документацию по методу .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 не установлен в связи с тем, что в момент его сохранения новый человек не имеет идентификатора, так как он еще не сохранен.

Мои вопросы:

  1. Как работает сборка, чтобы Rails достаточно умен, чтобы понять, как сохранить записи в правильном порядке?

  2. Как я могу сделать то же самое в отношениях belongs_to ?

  3. Где я могу найти документацию по этому методу?

спасибо




Links