通过连接表查找

时间:2012-01-18 23:12:16

标签: ruby-on-rails-3 activerecord join

所以我有一个Product,product_tags连接表和Tags。我想使用Product.find找到具有特定标签名称的所有产品。这可能吗?

1 个答案:

答案 0 :(得分:1)

您没有发布代码,但我认为这是您的设置:

class Product < ActiveRecord::Base
   has_many :product_tags
   has_many :tags, :through => :product_tags
end

class Tag < ActiveRecord::Base
   has_many :product_tags
   has_many :products, :through => :product_tags
end

class ProductTag < ActiveRecord::Base
   belongs_to :product
   belongs_to :tag
end

然后,您可以找到具有给定标记名称的所有产品,例如“cool_product”如下:

cool_tag = Tag.find_by_name("cool_product")
cool_tag.products # => list of all products

为了参考和研究,我强烈建议您阅读ActiveRecord::Associations::ClassMethods上的整个文档页面。关联方法是Active Record中一些最被低估的功能。