2012-06-15 37 views
8

Tôi hiện có hai mô hình khác nhau: UserProject. Mô hình User có ba loại người dùng - chủ sở hữu, nhà thầu và khách hàng. Tôi muốn chỉ định nhiều nhà thầu cho một dự án. Tôi đang cố gắng điều này với một hiệp hội has_many :through, như vậy:Rails has_many: thông qua với tên cột khác nhau trong bảng kết hợp

Class User 
    has_many :assignments 
    has_many :projects, :through => :assignments 

Class Project 
    has_many :assignments 
    has_many :contractors, :through => :assignments 

Class Assignment 
    belongs_to :user 
    belongs_to :project 

Vấn đề của tôi là trong việc sử dụng contractor_id trong bảng assignments thay vì user_id.

Trong bảng assignments Hiện tại tôi có các cột contractor_idproject_id. Tất cả mọi thứ dường như làm việc nếu tôi sử dụng user_id thay vào đó, nhưng điều đó sẽ gây ra những điều được khá lộn xộn sau này trong quan điểm của tôi.

Làm cách nào để thực hiện điều này?

Trả lời

14

Bạn nên sử dụng tùy chọn :foreign_key trong Assignment, ví dụ:

class Assignment 
    belongs_to :user, :foreign_key => :contractor_id 
    belongs_to :project 
+0

này chắc chắn các công trình một cách, bây giờ tôi chỉ cần để có được những mô hình sử dụng để nhận ra 'contractor_id' thay vì 'user_id' khi tôi gọi điện cho '@ user.projects' –

+2

. Mô hình người dùng cần thiết: foreign_key =>: contractor_id trên has_many: bài tập –

Các vấn đề liên quan