Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 通过rails联接表检索属性_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 通过rails联接表检索属性

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

我有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, :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)。