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
ます。