何时使用多态关联vs STI与rails中的另一个表

时间:2018-03-12 16:34:56

标签: ruby-on-rails activerecord devise polymorphic-associations sti

我已经看过多态协会和STI,但我不知道它们是否适用于我的特定用例。在我的应用程序中,我有以下相关类:

class Restaurant < ApplicationRecord
 belongs_to :owner, class_name: "User"
 has_many :menus
 has_many :dishes
 has_many :categories
 has_many :bookings
 has_many :simple_bookings
 mount_uploader :photo, PhotoUploader
end

class Dish < ApplicationRecord
 has_many :menu_dishes
 has_many :menus, through: :menu_dishes
 belongs_to :category
 belongs_to :restaurant
 mount_uploader :photo, PhotoUploader
end

class Menu < ApplicationRecord  
 belongs_to :restaurant
 has_many :bookings
 has_many :categories
 has_many :menu_dishes
 has_many :dishes, through: :menu_disheshas_many :menu_dishes
end

class MenuDish < ApplicationRecord
 belongs_to :dish
 belongs_to :menu
end

到目前为止,用户流程如下: 餐馆老板报名参加餐厅的菜肴。然后,此所有者创建一个包含不同MenuDishes的菜单。 之后,用户可以搜索不同的菜单并进行预订。

我的问题如下: 我想实现一个功能,其中所有者可以添加最多3个MenuDishOptions(属于MenuDishes),以便用户可以使用MenuDish的可用MenuDishOption更改每个MenuDish。

换句话说,我希望每个MenuDish包含许多MenuDishOptions。选择MenuDishOption后,MenuDish将传递给MenuDishOption,并将选定的MenuDishOption传递给MenuDish。

因此,MenuDishOption类看起来像这样:

class MenuDishOption < ApplicationRecord
 belongs_to :menu_dish
 has_one :dish
 belongs_to :menu, through: menu_dishes
end

MenuDish类将更新为:

class MenuDish < ApplicationRecord
 has_many :menu_dish_options
 belongs_to :menu
 belongs_to :dish
end

请告诉我是否需要分享更多信息,并感谢花费时间来帮助这个新手的任何人。

0 个答案:

没有答案