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 回答