0

私は3つのモデルを持っています:products、tags、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レコードとして取得するにはどうすればよいですか。

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 に答える