Railsで.buildメソッドに関するドキュメントを見つけることができませんでした(現在2.0.2を使用しています)。
実験により、has_manyいずれかのレコードが保存される前に、buildメソッドを使用して関係にレコードを追加できるようです。
例えば:
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この場合、外部キーは保存されているため、まだ保存されていないため、新しい人物にはIDがありません。
私の質問は:
Railsがレコードを正しい順序で保存する方法を理解できるほどスマートになるように、ビルドはどのように機能しますか?
belongs_to関係で同じことをするにはどうすればよいですか?この方法に関するドキュメントはどこにありますか?
ありがとうございました
belongs_to」と「によってメソッドを追加しますhas_one」。その他の技術ドキュメントは、APIドキュメント:belongs_toおよびにありhas_oneます。