假设我有一个拥有许多文章的用户模型。Rails - 删除未保存的关联记录
如果我多次调用user.articles.new,我将会有很多未保存的与用户关联的文章对象。它们在运行user.articles时可见。调用user.save将保存所有这些未保存的记录。
如何删除未保存的记录?我打算调用user.save,但我不希望那些未保存的记录在那里
假设我有一个拥有许多文章的用户模型。Rails - 删除未保存的关联记录
如果我多次调用user.articles.new,我将会有很多未保存的与用户关联的文章对象。它们在运行user.articles时可见。调用user.save将保存所有这些未保存的记录。
如何删除未保存的记录?我打算调用user.save,但我不希望那些未保存的记录在那里
选项将是user.articles.delete_if{|a| a.new_record?}
,但这听起来像一个解决方法,实际问题是@regulatethis指向您的问题评论。
这实际上并没有破坏记录。尝试使用控制台。如果没有简单的方法,我应该修复根本问题 –
我用以下解决方法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
这是Rails 4的正确答案。 –
你为什么要叫'user.articles.new'很多次,如果你不希望创建新的文章记录? – regulatethis