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
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
An option would be user.articles.delete_if{|a| a.new_record?}
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.
Another option would be calling reload
. In your case, you can try
user.reload
All those unsaved articles should be removed.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.