Rails - 删除未保存的关联记录

时间:2013-01-03 07:49:36

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

假设我有一个包含许多文章的用户模型。

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

选项可能是user.articles.delete_if{|a| a.new_record?},但这听起来像是实际问题的解决方法,@ qugulate会在您的问题评论中指出。