我有一些数据想存储在我的 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/