审查模型 - 在两个不同的其他模型之间共享
Review model - shared across two different other models
我正在制作一个应用程序,可以让人们列出他们想要出售的食品。他们列出菜肴(菜肴模型),当人们购买它时,会创建一个订单记录。
我希望人们能够在已购买菜肴的情况下提交评论,并查看订单(订单涉及与人会面)。
我想知道我是否可以创建一个 Review 模型,如下所示:
class Review < ActiveRecord::Base
belongs_to :dish
belongs_to :order
end
我觉得这样不对。 Dishes 上的评论和 Orders 上的评论将有不同的领域,并且可能是完全不同的逻辑,但在同一时间点它是相同的 "idea" 所以我认为最好只创建一个模型它。
以上是否正确?
谢谢
这是为单一 table 继承 (STI) 设计的用例。当大部分值在两个模型之间共享时,STI 可以让您从另一个模型继承它们。例如:
class Review < ActiveRecord::Base; end
class DishReview < Review
belongs_to :dish
end
class OrderReview < Review
belongs_to :order
end
然后您将评论类型存储在新的 type
列中,ActiveRecord 处理将它们存储在相同的 reviews
table 中。评论 table 需要菜品和订单的外键。
如果这些评论类型可能有很大差异...说你想在菜品评论中添加辣度和甜度等,在订单评论中添加速度和友好度等...那么它更有意义从单独的 table 开始,一个用于 DishReview,另一个用于 OrderReview。然后,您可以使用模块、服务、关注点等在它们之间共享逻辑。您还可以将公共数据存储在 Review table 中,并使 DishReview 和 OrderReview link 与之一对一。
我正在制作一个应用程序,可以让人们列出他们想要出售的食品。他们列出菜肴(菜肴模型),当人们购买它时,会创建一个订单记录。
我希望人们能够在已购买菜肴的情况下提交评论,并查看订单(订单涉及与人会面)。
我想知道我是否可以创建一个 Review 模型,如下所示:
class Review < ActiveRecord::Base
belongs_to :dish
belongs_to :order
end
我觉得这样不对。 Dishes 上的评论和 Orders 上的评论将有不同的领域,并且可能是完全不同的逻辑,但在同一时间点它是相同的 "idea" 所以我认为最好只创建一个模型它。
以上是否正确?
谢谢
这是为单一 table 继承 (STI) 设计的用例。当大部分值在两个模型之间共享时,STI 可以让您从另一个模型继承它们。例如:
class Review < ActiveRecord::Base; end
class DishReview < Review
belongs_to :dish
end
class OrderReview < Review
belongs_to :order
end
然后您将评论类型存储在新的 type
列中,ActiveRecord 处理将它们存储在相同的 reviews
table 中。评论 table 需要菜品和订单的外键。
如果这些评论类型可能有很大差异...说你想在菜品评论中添加辣度和甜度等,在订单评论中添加速度和友好度等...那么它更有意义从单独的 table 开始,一个用于 DishReview,另一个用于 OrderReview。然后,您可以使用模块、服务、关注点等在它们之间共享逻辑。您还可以将公共数据存储在 Review table 中,并使 DishReview 和 OrderReview link 与之一对一。