我有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 我的产品表有:Title,URL,Image_url。
如何将所有这些属性检索为AREL记录。
答案 0 :(得分:2)
您可以使用
以下加入关系
@producttag=Tag.find(:all,:joins => :Product ,:select => "*")
@producttag
包含您需要的内容
让我知道你的意见......
答案 1 :(得分: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有excellent guide,涵盖了多对多关联和联接。