我有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 :(得分: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
获取供应商名称。
答案 1 :(得分:0)
请记住,模型中使用belongs_to
关系,哪个表包含外键,has_many
关系在另一个模型中,没有任何外键。
考虑到这一点,您需要更改Supplier
/ Product
关系:Supplier
has_many
个产品和Product
belongs_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中了解有关关联的更多信息。
答案 2 :(得分: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记录来建立产品和供应商之间的关系。