2009-11-04 5 views
2

레일을 사용하여 여러 테이블에 삽입하려고합니다. 사용자 및 서비스라는 테이블이 있습니다. 사용자를 생성 할 때 사용자 세부 정보가 사용자에게 전달되어야하며 서비스 이름과 사용자 ID는 서비스 테이블에 있어야합니다. 도움이되면 크게 도움이 될 것입니다.레일에 여러 테이블에 삽입하는 방법

감사합니다.

답변

6

사용자 생성시 콜백을 추가하여 새 서비스를 만들 수 있습니다.

class User < ActiveRecord::Base 
    def after_create 
     Service.create!(:name => 'my_service_name', :user_id => self.id) 
    end 
end 

새로운 사용자 생성 후 after_create 메소드가 트리거됩니다. 따라서 새로운 사용자를 만들 때마다 새로운 서비스가 만들어집니다.

콜백에 대한 자세한 내용은 Rails Guides에서 확인할 수 있습니다.

+0

감사합니다. mathieu. 당신은 내 하루를 저장 :) – karthik

3

또한 accept_nested_attributes_for 사용할 수 있습니다 다음 service_attributes 해시에서

class User < ActiveRecord::Base 
    has_one :service 
    accepts_nested_attributes_for :service 
end 

User.create(:name => "Example User", :service_attributes => {:name => "Example Service"}) 

충전이 중첩 된 형태로 간단하게 이루어진다.

관련 문제