2016-11-26 4 views
0

私は4つのテーブルを持って、それらはすべて互いに接続されています。レールは他のテーブルを介して多くの関係を持っています

例えばそれが可能である

、私はレストランのテーブルからカテゴリとメニュー項目にアクセスしたい私は、メニューのテーブルを介してレストランからカテゴリにアクセスしようと、それは

が動作していない

restaurant -> has_many -> menus 
menu -> has_many -> categories 
category -> has_many -> menu items 

Restaurant.find(1).categories 
Restaurant.find(1).menu_items 

答えて

0

あなたはhas_many :throughの関連付けをする必要があります。 http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

を使用すると、生成されたSQLコードを見れば、それは「INNER JOIN`操作を使用して、あなたを紹介しますRestaurantモデルに

has_many :menus 
has_many :categories, through: :menus 
has_many :menu_items, through: :categories 

を追加Menuモデルに

has_many :categories 
has_many :menu_items, through: :categories 

を追加します。

関連する問題