2014-02-11 3 views
1

레일스를 처음 사용합니다. 나는 두 모델링을 작성하고 A와 B의 B. 모델은 다음과 같다 :모델 데이터를 다른 모델로 채우는 기능

class A < ActiveRecord::Base 
    attr_accessible: a1, a2 
end 

class B < ActiveRecord::Base 
    attr_accessible: b1,b2 
    self.table_name = "b" 
end 

을 실제로 여기에 매일 B의 데이터로의 데이터를 채 웁니다 갈퀴 작업이되도록에서 rake task 우리는 함수를 호출 할 수있다. A의 데이터에 B의 데이터를 채울 함수를 어디에서 작성해야하는지 이해할 수 없습니다.

+0

매일 A의 내용을 대체하는 B의 모든 데이터를 원하십니까? 아니면 새로운 데이터를 복사 하시겠습니까? 명확히해야 할 수도 있습니다. 지금 가장 간단한 해결책은 SQL을 사용하는 것입니다. 'A.connection.execute ('(a1, a2)에 삽입 (b1에서 b2 선택)')' – Shadwell

답변

1

몇 가지 레이크 작업이 있다고 언급했습니다. lib/tasks 디렉토리에 코드를 넣을 수 있습니다.

copy_from_b_to_a.rake 당신이 rake -T를 실행하면, 당신은 rake copy:from_b이 작업으로 등록되어있는 것을 확인하실 수 있습니다, 당신이 그것을 실행할 때,이 코드를 실행하여 데이터를 복사하려고 할

namespace :copy do 
    task :from_b => :environment do 
    B.all.each do |b| 
     a = A.new a1 => b1, a2 => b2 
     a.save 
    end 
    end 
end 

: 예를 들어 작성한 .rake 작업 내에 있습니다.

레이크 작업으로 작업하는 간단한 예입니다.

관련 문제