【问题标题】:Should I create two different sets of 'category' models? Ruby on Rails我应该创建两组不同的“类别”模型吗? Ruby on Rails
【发布时间】:2010-09-07 12:05:53
【问题描述】:

我正在开发的 Rails 应用程序上有两个模型,文章和个人资料。我希望他们有单独的类别集。我应该创建两个不同的类别模型吗? article_category 和 profile_category?如果我这样做,将会有很多冗余代码。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    问题是,这两个类别的功能是否相同?

    如果他们这样做,那么我会使用一种类别模型,即使不同的名称会被赋予不同的属性。

    诀窍是DRY 或“不要重复自己”。因此,如果任何内容被编写两次,您绝对可以将其重构为更小的代码。

    【讨论】:

    • 好的,我想我会在类别模型 profile_cat 中有布尔值?还有article_cat?。
    • 它们中的任何一个会共享相同的类别名称吗?
    • 不,它们不会共享相同的类别名称。
    • 嗯,对,但您希望能够在不拉下其他类别的情况下拉下类别?您可以执行您提到的操作,或者将它们的单独名称设置为常量数组。 :D 并从常量变量中提取到具有共享功能的通用类别模型。我对你的项目故事了解不多,所以很难说。
    【解决方案2】:

    如果模型相同,则应使用多态关系。在这里查看我的回复:Rails -- How to setup model that can belong to either of 3 different models

    如果不同的类别模型需要额外的逻辑,那么我会为此使用单表继承。您将有一个父 Category 类,并且 ArticleCategory 和 ProfileCategory 将从该类继承。基本上,您需要做的就是向类别和两个附加类添加一个类型字段。这将消除冗余代码,并允许您将任何特定于模型的代码分离到适当的类中。如果您需要其他指导,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2015-01-14
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      相关资源
      最近更新 更多