我在尝试建立从其他人继承的模型的关联时遇到问题。问题是在调用 save 方法之前关联的模型被保存到数据库中。
我在此页面http://techspry.com/ruby_and_rails/active-records-or-push-or-concat-method/中找到了更多信息
真的很奇怪,为什么 AR 会自动保存附加到关联的模型(使用 << 方法)?人们显然会期望必须调用 save 方法,即使父级已经存在。我们可以阻止这个调用
@user.reviews.build(good_params)
但这在关联具有层次结构的情况下会出现问题,例如:如果 Hunter has_many :animals,并且 Dog 和 Cat 继承自 Animal,我们不能这样做
@hunter.dogs.build
@hunter.cats.build
相反,我们被困在
@hunter.animals << Cat.new
@hunter.animals << Dog.new
如果 Cat/Dog 类没有验证,对象将自动保存到数据库中。我怎样才能防止这种行为?