【问题标题】:Why is it bad to use models as enumerations?为什么使用模型作为枚举不好?
【发布时间】:2009-10-08 03:58:31
【问题描述】:

我只是在观看 Aloha on Rails 上名为“You're Doing it Wrong”的会议的预览。

在简短的预览中,他提到使用 ActiveRecord 模型作为枚举(我假设他的意思是像 enumerate_by 这样的插件)。这对我来说似乎是合理的想法,有什么问题?仅仅是附加对象所需的开销吗?

谢谢

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-plugins


    【解决方案1】:

    他的演讲有点夸张和惯用语。不过,他的观点是正确的。

    将静态数据放入数据库存在开发开销:您需要确保所有迁移都在所有环境中运行(包括每次 db:test:clone),您需要加载数据每次使用代码时(例如,即使在 irb 中),您都可能会遇到加载顺序问题。简而言之,它不是免费的,我们不想产生不必要的开发和支持成本。

    但是,这样做可能有好处。数据可能希望在用不同语言编写的代码之间共享;代码可能很复杂,并且在每次部署之前都需要昂贵的测试周期;您可能想为数据创建数据库约束;您可能有想要与枚举关联的广泛或结构化的元数据;等等。

    不过,这些情况并不常见。对于大多数枚举,命名常量、哈希,甚至只是使用符号的约定就足够了。

    【讨论】:

      【解决方案2】:

      正如他所说,关于静态枚举,他遇到了问题。为什么要对一些可以存储在命名常量中的静态数据进行数据库查询?

      此外,一些开发人员为未来编写代码。它是关于对现在的需求进行编码,同时保持设计对修改关闭和对扩展开放,如果将来需要扩展的话。否则,您将花费时间、精力并最终将金钱花在客户并未真正要求拥有的东西上。可扩展设计是一回事,而针对未来需求的设计则是另一回事。虽然如果需要可以将前一个扩展到后一个,但目前并不真正需要后一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多