2012-05-05 4 views
1

다음과 같은 사항을 알아 내려고했지만 havent는 깔끔한 해결책을 제시 할 수있었습니다. 어쩌면 나는 뭔가를 놓치고있는 중이다.연관성을 기반으로 레일 모델을 초기화하는 방법

개요 나는 대다 작업 및 사용자 모델을 가지고있다.

한 명의 사용자가 많은 작업을 수행 할 수 있으며 하나의 작업은 많은 사용자가 공유 할 수 있습니다. 사용하여 USER_ID와 TASK_ID를 사용하여 작업과 USER_ID 링크에 의해 사용자와

user.tasks.create 

작업 링크 : task_table

을 통해 작업은 소속

나는 다음을 사용하여 작업을 생성 사용자이지만 일단 완료되면 작업의 다음 사용자에게 전달됩니다.

문제

그것은 항상 작업을 생성하는 사용자를 위해,이 작업을 완료하는 데 자신의 차례 인 경우이다. 완료되면 다음 사용자에게 전달됩니다.

내가 현재 가지고 : CURRENT_USER 변경 :

user1.tasks.create(:current_user => user1.id) 

는 사용자가 작업을 완료하면.

필자가 달성하고자하는 것은 user1.tasks.create를 작성하는 것뿐입니다. 명시 적으로 user1.id를 전달하지 않아도 자동으로 current_user가 설정됩니다. 내가 이것을 할 수있는 방법이 있습니까? 어쩌면 생성자를 사용했을 것입니다. (저는 거의 모든 것을 시도했지만, 작동하지 않습니다.)

감사합니다. 당신은 당신의 관계에 before_add 콜백이 일을 시도 할 수 있습니다

+0

같은 어떤 논리 후 첫 번째 'CURRENT_USER'를 선택 하시겠습니까? – moritz

+0

user.tasks.create-> 작업이 완료 될 때 바로. – Karan

+0

아냐. 첫 번째 사용자를 어떻게 선택 하시겠습니까? DB에서 가장 먼저, created_at를 가장 먼저 시작 하시겠습니까? – moritz

답변

0

,

class User < ActiveRecord::Base 
    has_many :tasks, :through => :task_table, :before_add => Proc.new { |u,t| t.current_user = u } 
end 
관련 문제