Reputation: 3361
Lets say I have a user model that has many articles.
If I call user.articles.new many times I will have many unsaved article objects associated with the user. They are visible when you run user.articles. Calling user.save will save all of this unsaved records.
How can I delete unsaved records? I plan on calling user.save but I don't want those unsaved records to be there
Upvotes: 9
Views: 2706
Reputation: 129
Another option would be calling reload
. In your case, you can try
user.reload
All those unsaved articles should be removed.
Upvotes: 0
Reputation: 1946
I use the following workaround 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
Upvotes: 5
Reputation: 10413
An option would be user.articles.delete_if{|a| a.new_record?}
, but this sounds like a workaround for the actual problem, to which @regulatethis points in your question's comment.
Upvotes: 2