ruby on rails4の、以下のようなモデルについて質問です。
lang
1user_id 2item_id 3class Blog < ActiveRecord::Base 4belongs_to :user 5belongs_to :item 6end 7 8category_id 9class Item < ActiveRecord::Base 10belongs_to :category 11end 12 13class Category < ActiveRecord::Base 14has_many :child_categories 15end 16 17 18child_category_id 19class User < ActiveRecord::Base 20has_many :blogs 21belongs_to :child_categories 22end 23 24category_id 25integer rank 26class ChildCategory < ActiveRecord::Base 27has_many :users 28belongs_to :category 29end 30
上記のような構成があったとして、
・blogsテーブルのcategory_idからcategoriesテーブルを引き、これとchaild_categoriesテーブルを紐づける
・blogsテーブルのuser_idからusersテーブルを引き、これとchild_categoriesを紐づける
上記の2つでblogsテーブルとchild_categoriesテーブルを1つ紐付け、child_categoriesテーブルのrankというint型のデータでソートしたいと考えております。
Blog.includes(item: {[category: :child_categories]}, user: :child_categories).order("child_categories.rank")
これでいけるかと思ったのですが、blogsテーブルのuser_id に紐づいたusersテーブルに紐づいたchild_categoriesテーブルが上手く紐づいておらず、itemテーブルに紐づいたcategoriesテーブルにchild_categoriesが紐づいたものが適当に抽出されてしまう状態です。
意図通りに関連づける方法はありませんでしょうか。
あなたの回答
tips
プレビュー