Railsで.buildメソッドに関するドキュメントを見つけることができませんでした(現在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
この場合、外部キーinDog
は、保存された時点ではまだ保存されていないため、新しい人にはIDがないため、設定されていません。
私の質問は次のとおりです。
Railsがレコードを正しい順序で保存する方法を理解するのに十分スマートになるように、ビルドはどのように機能しますか?
どうすれば
belongs_to
関係で同じことをすることができますか?この方法に関するドキュメントはどこにありますか?
ありがとうございました