2015-01-13 83 views
0

我有以下型號:List有(名稱和user_id字段)和User如何使用連接表在Rails中創建has_many和belongs_to關聯?

每個列表都有很多用戶。並且每個列表都屬於一個用戶。

我創建client_lists表:

class CreateClientListsTable < ActiveRecord::Migration 
    def change 
    create_table :client_lists do |t| 
     t.integer :user_id 
     t.integer :list_id 
    end 
    add_index :client_lists, :user_id 
    add_index :client_lists, :list_id 
    end 
end 

現在的第一個關係很容易地說,名單屬於用戶,並且用戶有許多名單:

class List < ActiveRecord::Base 
    belongs_to :user 
    validates :user, :presence => true 
end 

而且

class User < ActiveRecord::Base 
    has_many :lists, :dependent => :destroy 
end 

無論如何,我該如何找到客戶端列表client_lists表?

我添加列表HABTM關係

class List < ActiveRecord::Base 
    has_and_belongs_to_many :clients, :join_table => "client_lists", :foreign_key => "user_id" 
end 

然後試圖List.first.clients並得到了以下錯誤:

NameError: uninitialized constant List::Client 

回答

1

我不得不創建ClientLists型號:

class ClientLists < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :list 
end 

然後加入以下列表模式:

has_many :client_lists, :class_name => "ClientLists", :foreign_key => "list_id" 
    has_many :clients, through: :client_lists, source: :user 
相關問題