2010-10-09 4 views
1

J'ai un article qui a beaucoup de commentaires. Lorsque je crée des commentaires, je peux utiliser "new" pour les créer en mémoire, et les enregistrements de commentaires ne sont créés que lorsque l'article est sauvegardé.Délétions atomiques dans les rails

Un tel mécanisme existe-t-il pour marquer les commentaires à supprimer, afin que leurs enregistrements ne soient supprimés que lorsque l'article est enregistré?

merci.

Répondre

3

Je vous suggère de vous familiariser avec #accepts_nested_attributes_for. L'exemple ici est essentiellement ce que vous vouliez. Ceci est réécrit:

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

le faire dans une transaction:

Article.transaction do 
    ... 
end 
Questions connexes