2017-05-27 56 views
0

我有3個表:協會在軌道3個表

Product   Purshase  Supplier 
supplier_id  product_id  name 

這是相關機型:

class Purshase < ActiveRecord::Base 
    belongs_to :product 
end 

class Product < ActiveRecord::Base 
    has_many :supplier 
    has_many :purshase 
end 

class Supplier < ActiveRecord::Base 
    belongs_to :product 
end 

我想表明這種方式在我看來:purchase.product.supplier.name

+0

我假設'Purshase'和'purshase'確實是'Purchase'和'purchase',對嗎? – Gerry

回答

0

如果你想以這種方式顯示供應商名稱(purchase.product.supplier.name),那麼你應該改變你的模型關聯有點像這樣

class Purshase < ActiveRecord::Base 
    belongs_to :product 
end 

class Product < ActiveRecord::Base 
    belongs_to :supplier 
    has_many :purshases 
end 

class Supplier < ActiveRecord::Base 
    has_many :products 
end 

現在您可以在您的視圖中通過purchase.product.supplier.name獲取您的供應商名稱。

0

記住,belongs_to關係在哪個表包含外鍵的模型中使用,並且has_many關係在其他模型中,一個沒有任何外鍵。

考慮到這一點,你需要改變你的Supplier/Product關係:一個Supplierhas_many產品和Productbelongs_to供應商:

class Purchase < ApplicationRecord 
    belongs_to :product 
end 

class Product < ApplicationRecord 
    belongs_to :supplier 
    has_many :purchases 
end 

class Supplier < ApplicationRecord 
    has_many :products 
end 

你可以閱讀更多有關rails guides關聯。

0

根據您的描述,有一種情況是產品可能有許多供應商,供應商可能有許多產品。 我建議你創建一個名爲ProductSupplier像一箇中間模型:

class ProductSupplier < ActiveRecord::Base 
    belongs_to :supplier 
    belongs_to :purchase 
end 

的的has_many添加到這兩個產品和供應商。

型號產品:

has_many :product_suppliers, :dependent => :destroy 
has_many :suppliers, :through => :product_suppliers 

型號供應商:

has_many :product_suppliers, :dependent => :destroy 
has_many :products, :through => :product_suppliers 

您可以通過創建ProductSupplier記錄建立產品和供應商之間的關係。