Ruby on rails 铁路:跨越两条铁路属于协会
假设我有三个模型Ruby on rails 铁路:跨越两条铁路属于协会,ruby-on-rails,Ruby On Rails,假设我有三个模型 Product belongs_to :ProductCategory belongs_to :Manufacturer ProductCategory has_many :products Manufacturer has_many :products 我想为ProductCategory中的产品的制造商集合询问ProductCategory的一个实例,调用类似product\u category.Manufacturers 我目前已经在产品模型中实现了它,如下
Product
belongs_to :ProductCategory
belongs_to :Manufacturer
ProductCategory
has_many :products
Manufacturer
has_many :products
我想为ProductCategory中的产品的制造商集合询问ProductCategory的一个实例,调用类似product\u category.Manufacturers
我目前已经在产品模型中实现了它,如下所示:
def manufacturers
Manufacturer.find(self.products.pluck(:manufacturer_id).uniq.to_a
end
有更好的“铁路方式”吗
谢谢 是的,这是一个解决得非常好的问题,也是在Rails中使用关联的基本部分。你想要:
您的代码缺少一个
)
。如果我只希望每个制造商有一个记录,我假设我只需要执行product\u category.manufacturers.uniq?如果我在没有uniq的情况下这样做,我会为每个产品获得一条记录……是的,您需要.uniq
。否则,您将获得该类别中每个产品的制造商。
class ProductCategory
has_many :products
has_many :manufacturers, :through => :products
end