rails通过其他表有很多关系

时间:2016-11-26 07:46:35

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我有4个表,所有表都相互连接。

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

我尝试通过菜单表从餐馆访问类别,但它无法正常工作

我想从餐馆桌上访问类别和菜单项,是否可能

例如

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

1 个答案:

答案 0 :(得分:0)

您需要使用has_many :through关联。 http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

添加Menu模型

has_many :categories
has_many :menu_items, through: :categories

添加Restaurant模型

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

如果你看一下生成的sql代码,它会显示你使用'INNER JOIN`操作。