Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 铁路:跨越两条铁路属于协会_Ruby On Rails - Fatal编程技术网

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