Sar*_*els 22 ruby ruby-on-rails constants
我有一些数据,我想存储在我的Rails应用程序中,因为我用它来生成表单字段,检查提交的表单以确保其值有效等等.基本上,我希望数据在一个位置,因为我使用它在几个地方.
以前,我initialize在我的控制器中定义了一个方法,并在该方法中初始化实例变量,例如@graph_types = ['bar', 'line'].这似乎是一个坏主意,因为实际上所有这些initialize都被用于(初始化这些值),实例变量可以在以后更改,这是我不想要的.
现在,我在我的控制器中的任何方法之外定义常量,在我的过滤器后面的顶部,然后我冻结它们,例如GraphTypes = ['bar', 'line'].freeze.
我不想将这些数据存储在配置文件中,因为那时我必须跟踪一个额外的文件,读入文件并解析它等等.我不想将这些数据存储在数据库中,因为那样看起来有点矫枉过正; 我不需要做任何疯狂的LEFT OUTER JOIN类型查询,将可用的图形类型与我的另一个常量相结合Themes = ['Keynote', 'Odeo', '37 Signals', 'Rails Keynote'].freeze.我不想将数据存储在environment.rb中,因为此数据仅适用于特定的控制器.
考虑到这一切,我是否会采用这种"Ruby方式"?
use*_*011 30
对于不属于其他任何地方的常量,我有一个StaticData类.
  class StaticData
    GRAPH_TYPES = ['bar', 'line']
    SOMETHING_ELSE = ['A', 'B']
  end
然后我开始了
StaticData::GRAPH_TYPES
小智 11
我之前写的类似问题的相同答案适用并发布,因为此答案仍然出现在搜索结果中.
在控制器中加一个常数会有一些意义,因为常量与它直接相关.否则,常量应放在专用的初始化文件中:Rails.root/config/initializers/constants.rb.  
根据application.rb中列出的注释:
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded
| 归档时间: | 
 | 
| 查看次数: | 38737 次 | 
| 最近记录: |