2013-01-03 53 views
5

假设我有一个拥有许多文章的用户模型。Rails - 删除未保存的关联记录

如果我多次调用user.articles.new,我将会有很多未保存的与用户关联的文章对象。它们在运行user.articles时可见。调用user.save将保存所有这些未保存的记录。

如何删除未保存的记录?我打算调用user.save,但我不希望那些未保存的记录在那里

+2

你为什么要叫'user.articles.new'很多次,如果你不希望创建新的文章记录? – regulatethis

回答

2

选项将是user.articles.delete_if{|a| a.new_record?},但这听起来像一个解决方法,实际问题是@regulatethis指向您的问题评论。

+1

这实际上并没有破坏记录。尝试使用控制台。如果没有简单的方法,我应该修复根本问题 –

3

我用以下解决方法before_validation :remove_blank_articles!

class User 
    has_many :articles 

    validates_associated :articles 

    before_validation :remove_blank_articles! 

    private 
    def remove_blank_articles! 
     self.articles = articles - articles.select(&:blank?) 
     true 
    end 
end 

class Article 
    belongs_to :user 

    validates_presence_of :title, :body 

    def blank? 
    title.blank? and body.blank? 
    end 
end 
+0

这是Rails 4的正确答案。 –

相关问题