2011-01-03 3 views
0

레일 3의 빌드 메소드에 관한 문제가 있습니다. 프로젝트 및 그룹의 외래 키를 사용하여 Todo를 생성하려고합니다.2 개의 객체를 가진 레일 빌드 함수

연관성은 도도가 1 개 프로젝트 1 개 그룹

My routes 
resources :groups do 
     resources :projects do 
      resources :todos 
     end 
end 

작업을 완벽 belongs_to 그룹

belongs_to,

그룹 has_many 프로젝트를 추천하고

프로젝트 has_many에 일하러 왜 그렇게 보인다.

형태도 완벽하게 작동합니다

<%= form_for [@group, @project, @todo] do |f| %> 

내 문제는 지금 작성하고 도도 - 컨트롤러에서 UPDATE 방법이다.

def create 
     @group = Group.find(params[:group_id]) 
     @project = Project.find(params[:project_id]) 
     @todo = @group.projects.todos.build(params[:todo]) 
     @todo.save 
    ... 

내가 작성하는 경우 :

@todo = @group.todos.build(params[:todo]) 

또는 @todo = @ project.todos.build (PARAMS [: 할 일])

PROJECT_ID 또는 GROUP_ID는 데이터베이스에 저장됩니다. 하지만 함께 :

@todo = @group.projects.todos.build(params[:todo]) 

내 질문에 내가 GROUP_ID과 PROJECT_ID의 액세스를 얻을 데이터베이스로 모두를 절약 할 수있는 방법, 지금이다.

@group = Group.find(params[:group_id]) 
    @todo = @group.todos.build(params[:todo])  
    @todo.project = Project.find(params[:project_id]) 
:

답변

1

마지막으로 내가 일하는 해결책을 발견
관련 문제