复制所有模特儿童。跳过那些有外键的人

时间:2015-08-17 17:00:30

标签: ruby-on-rails

我正在为现有应用程序添加一个功能(我没有提到)。我正在尝试制作一个将报告复制到新期间的方法。报告模型有很多叫做回复的孩子,其中一些有外键。

以下是我的复制方法,在报告模型中:

def copy(new_period)
  copy = self.dup
  copy.report_id = Report.maximum(:report_id).next
  copy.period_id = new_period
  copy.responses = self.responses.map { |response| response.dup }
  copy.save
end

直到你用外键命中一个响应,然后你得到:

ActiveRecord::RecordNotUnique: PG::Error: ERROR:  duplicate key value violates unique constraint "responses_publication_author_id_key"

无论如何我可以跳过复制所有那些有外键的孩子而不仅仅是捕捉异常吗?这些孩子不需要复制。

我希望我有意义,因为我对很多这些概念都不熟悉。谢谢你能给我的任何帮助。

1 个答案:

答案 0 :(得分:2)

尝试一下:

lambda
  

keep_if { |item| block } → ary

     

删除给定块评估为false的self的每个元素。

     

另见#select!

     

如果没有给出阻止,则返回枚举器。