我正在制作一个应用程序,使人们可以列出要出售的食品。他们列出了菜式(菜式),当人们购买菜式时,将创建一个订单记录。
我希望人们能够在购买菜品时对其进行评论,并且还可以查看订单(该订单涉及与该人会面)。
我想知道是否可以创建如下的Review模型:
class Review < ActiveRecord::Base
belongs_to :dish
belongs_to :order
end
我觉得这是不对的。菜品的评论和订单的评论将具有不同的领域,并且可能具有完全不同的逻辑,但是在同一时间,其具有相同的“想法”,因此我认为最好为它创建一个模型。
以上正确吗?
谢谢
这是设计单表继承(STI)的用例。当两个模型之间共享大多数值时,STI可以让您从另一个模型继承这两个值。例如:
class Review < ActiveRecord::Base; end
class DishReview < Review
belongs_to :dish
end
class OrderReview < Review
belongs_to :order
end
然后,您将审阅类型存储在新type
列中,并且ActiveRecord处理将它们都存储在同一reviews
表中。评论表将需要菜肴和订单的外键。
如果这些评论类型可能差异很大...说您想在菜式评论中添加辣味和甜味等,并在订单评论中添加速度和友善性等,那么从单独的表格开始会更有意义,一个用于DishReview,另一个用于OrderReview。然后,您可以使用模块,服务,关注点等在它们之间共享逻辑。您也可以将常用数据存储在Review表中,并与DishReview和OrderReview一对一链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句