2013-03-03 1 views
0

저는 RoR을 처음 접했기 때문에이 권리에 대해 생각하지 않는다면 사과드립니다. 보고서에 여러 사용자를 할당 할 수 있어야하는 보고서가 있습니다. 사용자는 둘 이상의 보고서에 할당 될 수 있으며 보고서에는 여러 사용자가있을 수 있습니다. 이것이 허용되는 데이터베이스 관계를 어떻게 만들 수 있습니까? 하나의 보고서에 하나의 사용자를 할당하는 방법을 이해했지만 하나의 보고서에 많은 사용자를 할당하는 것은 아닙니다.동일한 id의 다중 배정을 허용하는 데이터베이스 관계 만들기

답변

2

나는이 일어날 수 있도록하기 위해 합류 클래스를 사용하십시오 : report_iduser_id이 관계를 만들 :

class Report 

    has_many :assignments 
    has_many :users :through => :assignments 

end 

class User 

    has_many :assignments 
    has_many :reports, :through => :assignments 

end 

class Assignment 

    belongs_to :report 
    belongs_to :user 

end 

클래스 Assignment 두 개의 필드가 있습니다.

는 액티브 레코드 협회에 레일 가이드에 루비를 읽어 http://guides.rubyonrails.org/association_basics.html

+0

좋아, 이해하기 시작했는데, 왜 내가 has_and_belongs_to_many를 사용하지 않겠습니까? 더 많은 사용자와 사용자가 많은 보고서에 속할 수 있습니까? 도와 줘서 고마워. – user2128197

+0

당신은 그것을 사용할 수 있지만, 위와 같은 것을 사용하면 원하는 경우 Assignments (예 : 날짜, 메모 등)에 필드를 추가 할 수있는 동일한 기능을 얻을 수 있습니다. habtm은 조인 테이블을 숨 깁니다. 전반적인 기능은 비슷합니다. –

0

내가보기 엔 당신이 레일 가이드에 루비를 숙지하시기 바랍니다. 그들은 귀중한 자산이 될 것입니다 !! 이 업무를 위해 위치는 RailsGuides Active Record Associations 일 것입니다.

코드가 실행되면 reports_users가 조인 테이블 인 reports, reports_users 및 users의 세 가지 데이터베이스 테이블을 만들고 싶습니다.

class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string  :name,  :null => false  
     t.timestamps 
    end 
    end 
end 


class CreateReports < ActiveRecord::Migration 
    def change 
    create_table :reports do |t| 
     t.string  :name,  :null => false  
     t.timestamps 
    end 
    end 
end 


class ReportsUsers < ActiveRecord::Migration 
    def change 
    create_table :reports_users, :id => false do |t| 
     t.references :user,   :null => false        
     t.references :report,   :null => false        
    end 
    end 
end 

이 마이그레이션을 실행 한 후에는 모델에서 활성 레코드 연결을 설정해야합니다.

class User < ActiveRecord::Base 
    has_and_belongs_to_many :reports 
end 

class Report < ActiveRecord::Base 
    has_and_belongs_to_many :user 
end 

이렇게하면 데이터베이스와 다 대다 모델 연결이 설정됩니다. 이렇게하면 시작할 수 있습니다. 이제 몇 가지보기를 만들어야합니다.

+0

참고로 Rails 가이드 사이트는 http://guides.rubyonrails.org/이며 다른 사이트는 http://api.rubyonrails.org/의 레일 API 페이지입니다. –

관련 문제