Rails模型设计决策-尝试避免使用HABTM x 2创建多个新模型

j

我一直在关注HABTM Railscast,并希望对其进行扩展。

Railscast方法非常适合在产品中添加类别。但是,可以说我有(说)五种将产品按不同维度分类的方法(这些方法有时会发生变化)。

使用提供的解决方案,每次添加新的“尺寸”时,我都需要向应用程序中再添加2个模型。

本质上,我想从类似的模型中迁移:

产品:卡坦定居者
类别:棋盘游戏,玩具等

到:

产品:卡坦定居者
类别:桌游,玩具等
年龄范围
1-10,11-20费用:高

Railscast解决方案在这里:http ://railscasts.com/episodes/17-habtm-checkboxes-revised?view=comments

现有解决方案,有待扩展:

产品.rb

has many categorisations
has many categories, through categorisations

Categorisation.rb

belongs to many products
belongs to many categories

Category.rb

has many products, through categorisation
has many categorisations

我可以做类似的事情:

产品.rb

has many AgeRangeCategorisations
has many AgeRanges, through AgeRangeCategorisations

AgeRangeCategorisation.rb

belongs to many products
belongs to many AgeRanges

AgeRange.rb

has many products, through AgeRangeCategorisation
has many AgeRangeCategorisations

产品.rb

has many CostCategorisations
has many Costs, through CostCategorisations

CostCategorisation.rb

belongs to many products
belongs to many costs

Cost.rb

has many products, through CostCategorisation
has many CostCategorisations

但是,感觉并不像Rails为每种“类别类型”创建新模型的方式。

我认为符合以下几点:

产品.rb

has many CategoryTypes
has many CategoryTypes, through CategoryTypeCategorisations

CategoryTypeCategorisations.rb

belongs to many Products
belongs to many CategoryTypes

CategoryType.rb

belongs to many CategoryTypeCategorisations
belongs to many categorisations
has many categories, through categorisations

Categorisation.rb

has many products
has many categories

Category.rb

has many products, through categorisation
has many categorisations

CategoryType是维(年龄,成本等),类别是CategoryType的有效答案列表。

现在,这与这么多“属于”和“有很多人在浮动”变得有些混乱

这是解决此问题的正确方法吗?我还能如何处理呢?

索尔斯滕·穆勒

您的最后一个变体是解决此问题的一种方法。当然,您不希望每个类别类型都有一个类。除非那些类别类型可能带有很多额外的业务逻辑来定义产品的“行为”,否则这种情况下,诸如“单表继承”之类的建模将是更好的方法。但是当您描述它时,我想它们更像是标记,主要是一些附加描述。(如果只有两种或三种类别类型,并且保持这种方式,那么类别的数量就没多大关系了,但是如果您计划得更多,我将避免这种情况)

至少出于完整性考虑,我将要提到一种替代方法,因为这将为您节省一张表,并且这样也就不那么复杂了。这将只是将这些类别建模为层次结构,其中您的类别类型是父类别,而类别是子类别。

Category
  - Board Games
  - Toy
Age Range
  - 1-10
  - 11-20
Cost
  - Low
  - Medium 
  - High

这更像是解决此问题的“经典”方法。

另外(尤其是如果您有很多产品和类别)(也许使用某些多面搜索引擎(Solr,Elastic,Sphinx ...)或具有类似功能的NOSql存储)可以使按多个属性进行搜索变得非常容易。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用多个模型时设计路由错误-RAILS 4.2.0

来自分类Dev

Rails模型设计

来自分类Dev

Rails_Admin多个“用户”模型+设计

来自分类Dev

使用MID压缩输入的DMN决策模型

来自分类Dev

Rails 4.2.x-在模型中使用params哈希数据

来自分类Dev

使用Rails创建关联的模型

来自分类Dev

如何使用模型创建新表

来自分类Dev

如何使用STI创建与现有模型相关的新模型?

来自分类Dev

保存复杂对象时如何避免创建新模型

来自分类Dev

在 Rails 的模型中是否有使用辅助方法的设计模式?

来自分类Dev

Rails 4-如果不使用'has_one'关联创建新的嵌套模型,则无法保存模型

来自分类Dev

Rails:设计具有未知属性的模型

来自分类Dev

Rails 中重复嵌套模型的设计

来自分类Dev

Rails 在使用嵌套模型创建时引用了错误的模型

来自分类Dev

无法使用Rails 3迁移新模型

来自分类Dev

设计多个表使用相同模型的 SQL 数据库

来自分类Dev

使用Ransack Rails 4搜索多个模型

来自分类Dev

Rails使用夹具测试多个属于模型

来自分类Dev

在OpenCV上使用Tensorflow 2.X模型

来自分类Dev

使用基于决策树比较的模型证明下界

来自分类Dev

使用2个相关模型创建和更新模型

来自分类Dev

对设计模型中的新字段进行自定义验证并使用相同的电子邮件地址创建多个用户

来自分类Dev

Rails如何从子模型创建父模型的新记录

来自分类Dev

使用 2 个或更多模型创建 API

来自分类Dev

如何避免在Rails中重复使用相同的模型

来自分类Dev

Rails:如何避免使用嵌套模型绘制URL

来自分类Dev

Rails 4尝试将多个记录保存到单个模型

来自分类Dev

CakePHP保存新的规范化HABTM模型并在解析的表中使用

来自分类Dev

创建新的bindingContext供子视图模型使用

Related 相关文章

  1. 1

    使用多个模型时设计路由错误-RAILS 4.2.0

  2. 2

    Rails模型设计

  3. 3

    Rails_Admin多个“用户”模型+设计

  4. 4

    使用MID压缩输入的DMN决策模型

  5. 5

    Rails 4.2.x-在模型中使用params哈希数据

  6. 6

    使用Rails创建关联的模型

  7. 7

    如何使用模型创建新表

  8. 8

    如何使用STI创建与现有模型相关的新模型?

  9. 9

    保存复杂对象时如何避免创建新模型

  10. 10

    在 Rails 的模型中是否有使用辅助方法的设计模式?

  11. 11

    Rails 4-如果不使用'has_one'关联创建新的嵌套模型,则无法保存模型

  12. 12

    Rails:设计具有未知属性的模型

  13. 13

    Rails 中重复嵌套模型的设计

  14. 14

    Rails 在使用嵌套模型创建时引用了错误的模型

  15. 15

    无法使用Rails 3迁移新模型

  16. 16

    设计多个表使用相同模型的 SQL 数据库

  17. 17

    使用Ransack Rails 4搜索多个模型

  18. 18

    Rails使用夹具测试多个属于模型

  19. 19

    在OpenCV上使用Tensorflow 2.X模型

  20. 20

    使用基于决策树比较的模型证明下界

  21. 21

    使用2个相关模型创建和更新模型

  22. 22

    对设计模型中的新字段进行自定义验证并使用相同的电子邮件地址创建多个用户

  23. 23

    Rails如何从子模型创建父模型的新记录

  24. 24

    使用 2 个或更多模型创建 API

  25. 25

    如何避免在Rails中重复使用相同的模型

  26. 26

    Rails:如何避免使用嵌套模型绘制URL

  27. 27

    Rails 4尝试将多个记录保存到单个模型

  28. 28

    CakePHP保存新的规范化HABTM模型并在解析的表中使用

  29. 29

    创建新的bindingContext供子视图模型使用

热门标签

归档