模型之间的关联

问题描述 投票:0回答:1

我正在尝试找到某些模型之间的关联。

用户希望通过当前星期的菜单选择一周的菜肴,菜单将每周都有。但是一个菜可以属于多个菜单,因此添加“ belongs_to:”菜单没有任何意义。

User
has_many: selections
Menu
start_date
end_date
has_many: dishes
Dish
has_many: menus
Selection
has_many: dishes through: menu

任何帮助将不胜感激。

ruby-on-rails ruby activerecord rails-activerecord
1个回答
2
投票

您在这里有多对多关系。每个菜单可以有多个菜单,每个菜碟可以属于多个菜单。因此,您在这里需要一个桥接表,假设为“ menu_items”。现在的结构将是这样。

User [name, email, etc]
has_many: selections
has_many: menu_items, thorugh: selections
has_many: dishes, through: menu_items

Menu [start_data, end_date]
has_many: menu_items
has_many: dishes, through: menu_items

Dish [name]
has_many: menu_items
has_many: menus, through: menu_items

MenuItem [menu_id, dish_id]
belongs_to: menu
belongs_to: dish

Selection [menu_item_id, user_id]
belongs_to: user
belongs_to: menu_item

我建议您仔细阅读文档,以更好地理解所有这些背后的逻辑:https://guides.rubyonrails.org/association_basics.html

© www.soinside.com 2019 - 2024. All rights reserved.