我需要能够访问整个 Rails 项目中的列表。为简单起见,这是我放入的列表environment.rb
FOODS = ['CHEESE', 'EGGS', 'ORANGES']
我希望每个文件都可以访问这个常量,但同时我担心某些文件可能会通过做一些只有它特别需要的事情来搞乱所有其他文件的列表,例如:FOODS.push("TEMPORARY_FOOD")
使此列表全局可访问的正确方法是什么?我应该使用.freeze
,还是应该使用其他方法而不是environment.rb
.
我需要能够访问整个 Rails 项目中的列表。为简单起见,这是我放入的列表environment.rb
FOODS = ['CHEESE', 'EGGS', 'ORANGES']
我希望每个文件都可以访问这个常量,但同时我担心某些文件可能会通过做一些只有它特别需要的事情来搞乱所有其他文件的列表,例如:FOODS.push("TEMPORARY_FOOD")
使此列表全局可访问的正确方法是什么?我应该使用.freeze
,还是应该使用其他方法而不是environment.rb
.
按照惯例,红宝石常量并不意味着要修改。使用.freeze
很好,但请记住,它不会阻止重新定义常量,
FOODS = ['ANOTHER', 'ARRAY']
如果您在environment.rb
. 将常量初始化放在 config/initializers 文件中的更好位置 - 除非您在 environment.rb 中需要它 - 使升级 environment.rb(Rails 升级更容易)
如果只有视图文件需要 FOODS 数组,你可以把它放在 application_helper 文件中。如果模型也需要它,您可以将它与其他数组合并:
食物 + [“香蕉”]
(还有一百万种方法可以做到这一点)。