Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-删除未保存的关联记录_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.2 - Fatal编程技术网

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

Ruby on rails Rails-删除未保存的关联记录,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,假设我有一个包含许多文章的用户模型 如果我多次调用user.articles.new,我将有许多未保存的文章对象与该用户关联。当您运行user.articles时,它们是可见的。调用user.save将保存所有未保存的记录 如何删除未保存的记录?我计划调用user.save,但我不希望那些未保存的记录出现在那里一个选项将是user.articles.delete_if{a | a.new_record?},但这听起来像是解决实际问题的一个方法,@regulatethis在您的问题评论中指出了这一

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

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


如何删除未保存的记录?我计划调用user.save,但我不希望那些未保存的记录出现在那里

一个选项将是
user.articles.delete_if{a | a.new_record?}
,但这听起来像是解决实际问题的一个方法,@regulatethis在您的问题评论中指出了这一点。

在验证之前,我使用了以下变通方法
:删除空白文章

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.new
?这实际上并不会破坏记录。用控制台试过了。如果没有简单的方法,我可能应该解决根本问题