簡単な概要を説明するために、私はモデルインストラクター、コースタイプ、およびマテリアルを含むコースシステムを用意しています。各インストラクタがタイプ(instructor_types)に接続し、タイプが材料(material_types)に接続するための2つの結合(has_many through)テーブルがあります。ジョインによるジョインによる関係レコードの検索
instructor_typesテーブルの例:
id, type_id, instructor_id
1, 2, 1
2, 3, 1
material_typesテーブルの例:
id, material_id, type_id
1, 1, 2
2, 2, 2
IDがinstructor_typesテーブルにありますインストラクターのが唯一のmaterial_typesにTYPE_IDに合わせ材料レコードを見つけることができるはずです表。
私は(material.rbモデルで)試してみた:私は、レコード、単純にビューでレンダリングしようとしているのMySQLエラー
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT `types`.* FROM `types` INNER JOIN `instructor_types` ON `types`.`id` = `i' at line 1: SELECT `materials`.* FROM `materials` INNER JOIN `material_types` ON `material_types`.`material_id` = `materials`.`id` WHERE (type_id = SELECT `types`.* FROM `types` INNER JOIN `instructor_types` ON `types`.`id` = `instructor_types`.`type_id` WHERE `instructor_types`.`instructor_id` = 1)
を生成
has_many :material_types, :dependent => :destroy
has_many :types, through: :material_types
def self.list_type_permissions(instructor) #current instructor id
@materials = self.joins(:material_types).where('type_id = ?', instructor.types)
end
ループ:
<% @materials.each do |material| %>
<li><%= material.title %></li>
<% end %>