0

次のようなチュートリアル モデルがあります。

class Tutorial < ActiveRecord::Base
  attr_accessible :content, :title
  has_many :tutorial_categories
end

そして、次のような tutorial_category モデル:

class TutorialCategory < ActiveRecord::Base
  attr_accessible :name, :tutorial_id
  belongs_to :tutorial
end

次のような方法でtutorial_categoryを知っているとき@tutorial_category = TutorialCategory.find(params[:id])

そのチュートリアル カテゴリに属する​​すべてのチュートリアルを取得するにはどうすればよいですか。別の言い方をすれば、@tutorial_category.name がわかれば、同じ tutorial_category.name が設定されたすべてのチュートリアルが必要になります。

これを行うには、結合またはインクルードを使用する必要がありますか?

4

1 に答える 1

1

まず、ここで間違ったタイプの関係を使用しています。many to manyセットアップとの関係をモデル化しようとしていmany to oneます。次のようにモデルを設定します。categories_tutorialsこれは、フィールドcategory_idと。で呼び出される結合テーブルがあることを前提としていますtutorial_id。また、従来のRails結合テーブルの構文に非常に近いため、カテゴリモデルの名前を変更したことにも注意してください。

class Tutorial < ActiveRecord::Base
  attr_accessible :content, :title
  has_and_belongs_to_many :categories
end

class Category < ActiveRecord::Base
  attr_accessible :name
  has_and_belongs_to_many :tutorials
end

特定のカテゴリのすべてのチュートリアルを検索するには、次のような操作を実行できます。

a = Category.find(:params[:id])
tutorials = a.tutorials
于 2012-09-20T16:20:51.160 に答える