我无法理解的基本功能。
我需要将值从一行MySQL行复制到新行 - 听起来很简单。
我尝试过以下操作,将key_tasks设置为等于克隆的future_tasks,但不是为每个任务创建新行的预期结果,而是保留相同的ID,因此不会创建新行。 @per_resent_review与当前正在进行的审核有关,评估[-2]与上次完成的审核有关。
@performance_review.key_tasks = appraisals[-2].performance_review.future_tasks.clone
@performance_review.save
示例行:
539 | test1 | 1 | 130 | 2017-04-07 10:27:42 | 2017-04-07 11:02:10
克隆后预计:
539 | test1 | 1 | 130 | 2017-04-07 10:27:42 | 2017-04-07 11:02:10
540 | test1 | 1 | 131 | 2017-04-07 10:27:42 | 2017-04-07 11:02:10
克隆后的实际情况:
539 | test1 | 1 | 131 | 2017-04-07 10:27:42 | 2017-04-07 11:02:10
答案 0 :(得分:1)
找到解决方案。似乎'dup'对集合不起作用。
appraisals[-2].performance_review.future_tasks.each do |t|
t['future'] = 0
@performance_review.key_tasks << t.dup
end
答案 1 :(得分:0)
Rails有一个exclude哈希方法。
因此,如果你想克隆除id之外的所有内容,你可以使用
Foo.find(3).attributes.except("id")
e.g。
Place.first.attributes.except("id")
#=> {"name"=>"Seyidin dönəri", "address"=>"Lorem ipsum", "photo"=>"http://press24.az/az/uploads/posts/2013-07/1375267965_1362063196_btn-rk-et-dnr.jpg", "phone"=>"+994502113213", "lat"=>"40.78563", "lng"=>"41.98745", "created_at"=>2017-04-04 07:36:21 UTC, "updated_at"=>2017-04-04 07:36:21 UTC}
然后,您可以将此哈希值传递给模型上的create
方法。
e.g。
Place.create hash_above