ruby-on-rails - Rails 静态数据集

标签 ruby-on-rails ruby design-patterns activerecord

处理静态数据集(非动态)的最佳方式是什么?

例如,假设您有一个包含 10 个不同实例的模型,每个实例都是唯一的,但在您的应用程序的整个生命周期中都不会改变。创建一个 activerecord 模型并将此数据存储在数据库中似乎有些过分,但创建一个通用类并将此数据存储在代码中似乎很丑陋。

什么是公认的最佳实践?


示例:

您有一个费率和一个用户。用户可以有 1-10 的等级,当等级改变时,费率改变。费率可能有其他信息,因此简单地将它存储为用户的属性可能比它的值(value)更麻烦。将它与 Rate 联系起来或像这样将其创建为 User 上的方法是否有意义:

def rate
  case self.level
  when 1:
    { value: "foo", something: "bar", else: "baz" }
  when 2:
    # etc
  end
end

似乎这两种解决方案都不是理想的,但我不确定是否还有其他理想的解决方案。

最佳答案

我会将此信息存储在 YAML 文件中。你可以使用 RailsConfig gem并像这样创建一个 YAML 文件

level:
  1:
    some: value
    another: value
  2:
    some: second value
    another: second value

然后访问它

rate = 2
val = Settings.level[rate.to_s].some

(我不完全确定 YAML 中数字作为键,也许你必须转义它们)

关于ruby-on-rails - Rails 静态数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13382606/

相关文章:

分配器类型参数的 C++ 设计模式

c# - 工作单元模式的泛型问题

ruby-on-rails - 如何获取出现在Elasticsearch Rails中的文档数量

ruby - 三元运算符语法错误

mysql - 使用 Date.commercial 将 Mysql week 转换为 Date

ruby - 在一个文件中使用 Rspec,例如 test/unit

ruby-on-rails - 用于服务器端口修改的 rails zeus custom_plan

java - 工厂方法模式的好处

ruby-on-rails - 如何在 Rails 模型的构造函数中使用参数

ruby-on-rails - 验证大于 rails 模型中的现有列