假设我有一个包含很多文章的用户模型。
如果我多次调用 user.articles.new 我将有许多与用户关联的未保存的文章对象。当您运行 user.articles 时,它们是可见的。调用 user.save 将保存所有这些未保存的记录。
如何删除未保存的记录?我打算打电话给 user.save 但我不希望那些未保存的记录在那里
假设我有一个包含很多文章的用户模型。
如果我多次调用 user.articles.new 我将有许多与用户关联的未保存的文章对象。当您运行 user.articles 时,它们是可见的。调用 user.save 将保存所有这些未保存的记录。
如何删除未保存的记录?我打算打电话给 user.save 但我不希望那些未保存的记录在那里
我使用以下解决方法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
一个选项是user.articles.delete_if{|a| a.new_record?}
,但这听起来像是实际问题的解决方法,@regulatethis 在您的问题评论中指出。