Ruby Rails。如何在从属关系的情况下使用Active Record .build方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我一直无法在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

Dog在这种情况下没有设置外键,因为在保存时新对象没有ID,因为它还没有被保存。

提问于
用户回答回答于

Class Dog
   has_many :tags
   belongs_to :person
end

Class Person
  has_many :dogs
end

d = Dog.new
d.build_person(:attributes => "go", :here => "like normal")

甚至

t = Tag.new
t.build_dog(:name => "Rover", :breed => "Maltese")

你也可以使用create_dog来立即保存它,就像你可以在集合上调用相应的“create”方法一样!

用户回答回答于
@article = user.articles.build(:title => "MainTitle")
@article.save

扫码关注云+社区