我有一篇文章,其中有很多评论。
当我创建评论时,我可以使用“new”在内存中构建它们,只有在保存文章时才会创建评论记录。
是否存在标记删除注释的机制,以便仅在保存文章时删除其记录?
感谢。
答案 0 :(得分:3)
我建议你熟悉#accepts_nested_attributes_for。这个例子基本上就是你想要的。这是一个改写的:
class Post < ActiveRecord::Base
has_many :comments
accepts_nested_attributes_for :comments, :allow_destroy => true
end
post = Post.find(1) # With 3 comments
post.comments_attributes = [{:_destroy => "1", :id => post.comments.first.id}]
# Look ma! No SQL statements!
post.save!
# BEGIN / UPDATE posts / DELETE FROM comments WHERE id = X / COMMIT
答案 1 :(得分:1)
在交易中执行此操作:
Article.transaction do
...
end