0

我有 3 个模型:产品、标签和 products_tags:

标签型号:

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

产品型号:

class Product < ActiveRecord::Base
  has_many :tags, :through => :products_tags
  has_many :products_tags
  accepts_nested_attributes_for :tags
  accepts_nested_attributes_for :products_tags

加入:

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

我需要一个查询,它将检索与标签和产品模型相关的属性,作为 AREL 对象。

例如:

我的标签表有 1 个字段:Cat_name 我的产品表有:标题、URL、Image_url。

如何将所有这些属性检索为 AREL 记录。

4

2 回答 2

2

您可以使用

以下加入关系

 @producttag=Tag.find(:all,:joins => :Product ,:select => "*")

 @producttag 

包含您需要的内容

让我知道你的意见......

于 2012-08-16T08:03:11.130 回答
1

你没有说明你想从哪里开始搜索来检索它,所以让我们来看看所有这些。

从标签开始

作为 ActiveRecord 对象的特定标签和关联产品:

Tag.find(params[:id], include: :products)

特定标签和关联产品作为 arel 对象:

Tag.where(id: params[:id]).includes(:products)

所有标签和相关产品作为 ActiveRecord 对象的数组:

Tag.includes(:products)

所有标签和关联产品作为一个 arel 对象:

Tag.includes(:products).arel

从产品开始

作为 ActiveRecord 对象的特定产品和关联标签:

Product.find(params[:id], include: :tags)

特定产品和关联标签作为 arel 对象:

Product.where(id: params[:id]).includes(:tags)

所有产品和相关标签作为 ActiveRecord 对象的数组:

Product.includes(:tags)

所有产品和相关标签作为一个 arel 对象:

Product.includes(:tags).arel

Rails 有一个很好的指南,涵盖了多对多的关联和连接。

于 2012-08-15T19:33:34.980 回答