我们说我有这个简单的关联:
class Post < ActiveRecord::Base
has_many :comments # :autosave option is not declared
end
这段代码:
post = Post.new(title: 'ruby rocks')
post.comments.build(body: 'hello world')
post.save # => saves both post and comment
如果post
无效会发生什么情况,是否仍会创建评论?
如果附加的comment
无效,还会创建帖子会怎样?
我希望当comment
或post
无效时,它不会保存任何内容。我做对了吗?
我需要validates_associated
吗?谢谢
答案 0 :(得分:0)
如果帖子无效,则不会保存相关记录。根据{{3}}上的文档:
保存父项,其关联以及标记关联的销毁,都发生在事务中。这绝不应该使数据库处于不一致状态。
如果必须验证子记录,则需要validates_associated。但请注意,只能在关联的一侧调用validates_associated
,否则您将创建一个循环引用。