铁轨中的原子缺失

时间:2010-10-09 21:33:07

标签: ruby-on-rails activerecord

我有一篇文章,其中有很多评论。

当我创建评论时,我可以使用“new”在内存中构建它们,只有在保存文章时才会创建评论记录。

是否存在标记删除注释的机制,以便仅在保存文章时删除其记录?

感谢。

2 个答案:

答案 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