2017-08-15 86 views
0

所以我有兩個表,一個Customers表和一個Companies表。我還創建了一個空的Employees表,我想用它作爲連接表。Rails填充現有的加入表

這是我有關聯:(我希望客戶與他們各自的公司關聯)

class Company < ApplicationRecord 
    has_many :employees 
    has_many :customers, :through => :employees 
end 

class Customer < ApplicationRecord 
    belongs_to :employees 
end 

class Employee < ApplicationRecord 
    belongs_to :customer 
    belongs_to :company 
end 

哪裏會做到這一點的最好方法是什麼?在我的客戶#控制器中的新方法?我讀到我需要使用< <,但我不知道如何解決這個問題。

+0

做了'customer'屬於或有許多'employees'?員工屬於或有一個'客戶'嗎?現在你有'belongs_to'在兩個方向 –

回答

1

您需要使用反向關聯在這裏的概念: 類客戶的has_many:公司:通過=>:員工

+0

我是否需要通過遷移添加customer_id列和company_id列,還是自動執行? –

+1

您將始終需要在連接表中添加列(員工在您的案例中)。遷移總是需要支持ActiveRecord分支。 –

+0

非常感謝。目前學習Rails,並試圖做一些更復雜的數據庫關係。你幫了很多忙。 –

0

你可以只嘗試委託對客戶的公司呼籲其員工:

customer.rb

delegate :company, to: :employee 

現在,每當你問一個客戶的公司,它會要求其員工來處理它。