2017-04-07 7 views
0

그냥 머리를 쓸 수없는 기본적인 기능.Ruby에서 SQL 행 복제하기

하나의 MySQL 행에서 새 행으로 값을 복사해야합니다.

key_tasks를 복제 된 future_tasks와 동일하게 설정했지만 각 작업에 대해 새 행을 만드는 예상 결과 대신 동일한 ID를 유지하므로 새 행을 만들지 않습니다. @performance_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

가능한 복제 [무엇은 액티브 레코드를 복제하는 가장 쉬운 방법입니다?] (http://stackoverflow.com/questions/60033/what-is-the-easiest-way-to-duplicate-an -activerecord-record) – Chowlett

+0

ID는 변경되지 않지만 비슷한 질문은 예상되는 결과입니다. –

+0

'key_tasks'와'future_tasks' 둘 다': has_many' 관계입니까? – Chowlett

답변

1

용액 알았다. 'dup'은 콜렉션에서 작동하지 않는 것 같습니다.

appraisals[-2].performance_review.future_tasks.each do |t| 
    t['future'] = 0 
    @performance_review.key_tasks << t.dup 
    end 
0

레일은 해시 방법이 exclude입니다. 당신이 ID를 제외한 모든 복제 할 경우

그래서, 당신은 사용할 수

Foo.find(3).attributes.except("id") 

예를 들어,

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 메소드에 전달할 수 있습니다.

Place.create hash_above