ruby-on-rails - Rails 中的常量值

标签 ruby-on-rails ruby constants

我有一些数据想存储在我的 Rails 应用程序中的某个位置,因为我用它来生成表单字段、检查提交的表单以确保其值有效等。基本上,我希望将数据存储在一个位置,因为我在多个地方使用它。

之前,我在我的 Controller 中定义了一个 initialize 方法并在该方法中初始化实例变量,例如@graph_types = ['bar', 'line']。这似乎是个坏主意,因为实际上所有的 initialize 都被用于(初始化这些值)并且实例变量可以稍后更改,这是我不想要的。

现在,我在我的 Controller 中的任何方法之外定义常量,就在我的过滤器之后的顶部,然后我卡住它们,例如GraphTypes = ['bar', 'line'].freeze.

我不想将此类数据存储在配置文件中,因为那样我就必须跟踪一个额外的文件、读取文件并解析它等等。我不想将这些数据存储在数据库,因为这似乎有点矫枉过正;我不需要做任何疯狂的 LEFT OUTER JOIN 类型的查询,将可用的图形类型与我的另一个常量相结合,比如 Themes = ['Keynote', 'Odeo', '37 Signals', 'Rails Keynote'] .卡住。我不想将数据存储在 environment.rb 中,因为该数据仅与特定 Controller 有关。

考虑到所有这些,我是否要采用这种“Ruby 方式”?

最佳答案

对于不真正属于其他任何地方的常量,我有一个 StaticData 类。

  class StaticData

    GRAPH_TYPES = ['bar', 'line']

    SOMETHING_ELSE = ['A', 'B']

  end

然后我用

StaticData::GRAPH_TYPES

关于ruby-on-rails - Rails 中的常量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361247/

相关文章:

ruby-on-rails - 如何解冻哈希?

jquery - 在遵循 Heroku 关于如何直接上传到 aws s3 的教程之后,无法将 ActionDispatch::Http::UploadedFile 转换为字符串

c++ - 常量冲突

c++ - 从迭代器中获取 const_iterator

ruby-on-rails - 如何在 Rails 中的数据库查找中得到 true 或 false?

javascript - 数据表过滤——智能搜索中的精确匹配

ruby-on-rails - rails : Custom validations using ActiveModel

Ruby 私有(private) attr_accessor 和意外的 nil

ruby - 针对已编译的 ruby​​ 运行

通过 C 中的非常量指针更改常量内存内容