Ruby on rails 通过rails联接表检索属性
我有3种型号:产品、标签和产品标签: 标签型号:Ruby on rails 通过rails联接表检索属性,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,我有3种型号:产品、标签和产品标签: 标签型号: class Tag < ActiveRecord::Base has_many :products, :through => :products_tags has_many :products_tags end class标记:产品\u标签 有很多:产品和标签 结束 产品型号: class Product < ActiveRecord::Base has_many :tags, :thro
class Tag < ActiveRecord::Base
has_many :products, :through => :products_tags
has_many :products_tags
end
class标记:产品\u标签
有很多:产品和标签
结束
产品型号:
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
类产品:产品\u标签
有很多:产品和标签
接受:标记的\u嵌套\u属性\u
接受\u嵌套的\u属性\u用于:产品\u标记
加入:
class ProductsTag < ActiveRecord::Base
belongs_to :product
belongs_to :tag
end
class ProductsTag
我需要一个查询,它将检索与标签和产品模型相关的属性,作为AREL对象
例如:
我的标记表有1个字段:Cat_name
我的产品表有:标题、URL、图像和URL
如何将所有这些属性作为AREL记录进行检索。您没有说明要从何处开始搜索以检索这些属性,所以让我们来看看所有这些属性 从标签开始 作为ActiveRecord对象的特定标记和关联产品:
Tag.find(params[:id], include: :products)
Product.find(params[:id], include: :tags)
作为arel对象的特定标签和相关产品:
Tag.where(id: params[:id]).includes(:products)
Tag.includes(:products).arel
Product.where(id: params[:id]).includes(:tags)
Product.includes(:tags).arel
作为ActiveRecord对象数组的所有标记和关联产品:
Tag.includes(:products)
Product.includes(:tags)
作为arel对象的所有标签和相关产品:
Tag.where(id: params[:id]).includes(:products)
Tag.includes(:products).arel
Product.where(id: params[:id]).includes(:tags)
Product.includes(:tags).arel
从产品开始
作为ActiveRecord对象的特定产品和关联标记:
Tag.find(params[:id], include: :products)
Product.find(params[:id], include: :tags)
作为arel对象的特定产品和相关标签:
Tag.where(id: params[:id]).includes(:products)
Tag.includes(:products).arel
Product.where(id: params[:id]).includes(:tags)
Product.includes(:tags).arel
作为ActiveRecord对象数组的所有产品和关联标记:
Tag.includes(:products)
Product.includes(:tags)
作为arel对象的所有产品和相关标签:
Tag.where(id: params[:id]).includes(:products)
Tag.includes(:products).arel
Product.where(id: params[:id]).includes(:tags)
Product.includes(:tags).arel
Rails具有覆盖多对多关联和联接的 您没有说明要从何处开始搜索以检索此内容,所以我们只需浏览所有这些内容即可 从标签开始 作为ActiveRecord对象的特定标记和关联产品:
Tag.find(params[:id], include: :products)
Product.find(params[:id], include: :tags)
作为arel对象的特定标签和相关产品:
Tag.where(id: params[:id]).includes(:products)
Tag.includes(:products).arel
Product.where(id: params[:id]).includes(:tags)
Product.includes(:tags).arel
作为ActiveRecord对象数组的所有标记和关联产品:
Tag.includes(:products)
Product.includes(:tags)
作为arel对象的所有标签和相关产品:
Tag.where(id: params[:id]).includes(:products)
Tag.includes(:products).arel
Product.where(id: params[:id]).includes(:tags)
Product.includes(:tags).arel
从产品开始
作为ActiveRecord对象的特定产品和关联标记:
Tag.find(params[:id], include: :products)
Product.find(params[:id], include: :tags)
作为arel对象的特定产品和相关标签:
Tag.where(id: params[:id]).includes(:products)
Tag.includes(:products).arel
Product.where(id: params[:id]).includes(:tags)
Product.includes(:tags).arel
作为ActiveRecord对象数组的所有产品和关联标记:
Tag.includes(:products)
Product.includes(:tags)
作为arel对象的所有产品和相关标签:
Tag.where(id: params[:id]).includes(:products)
Tag.includes(:products).arel
Product.where(id: params[:id]).includes(:tags)
Product.includes(:tags).arel
Rails具有覆盖多对多关联和联接的 您可以使用
以下加入关系
@producttag=Tag.find(:all,:joins => :Product ,:select => "*")
@producttag
包含您需要的内容
请让我知道您的意见……您可以使用
以下加入关系
@producttag=Tag.find(:all,:joins => :Product ,:select => "*")
@producttag
包含您需要的内容
让我知道您的评论……您是否有限制搜索查询的起点?例如,一个特定的标签或标签id?我不确定从哪里开始..我需要找到全部,因为这将输入到一个“统计”页面的索引中。所以你基本上想要所有标签的数据,所有产品的数据?你能提供一个你想要的结果数据的例子吗?是的,并且想按标签名对它们进行分组,只是为了避免重复。所以本质上我计划在我的统计索引中有一个表,它基本上列出了所有的猫名以及与特定猫名相关的产品数量。产品编号将是一个链接,用于显示属于该类别名称的产品的详细信息(标题、URL)。您是否有限制搜索查询的起点?例如,一个特定的标签或标签id?我不确定从哪里开始..我需要找到全部,因为这将输入到一个“统计”页面的索引中。所以你基本上想要所有标签的数据,所有产品的数据?你能提供一个你想要的结果数据的例子吗?是的,并且想按标签名对它们进行分组,只是为了避免重复。所以本质上我计划在我的统计索引中有一个表,它基本上列出了所有的猫名以及与特定猫名相关的产品数量。产品编号将是一个链接,用于显示属于该类别名称的产品的详细信息(标题、URL)。