我想找到一个好的地方来存放真正全局常量的定义,这些常量适用于整个应用程序。特别是,它们适用于我的模型逻辑和视图决策。我找不到任何DRY的地方来放置这些定义,使它们在所有我的模型和所有我的视图中都可用。
以具体的例子为例,我想要一个常量
COLOURS = ['white', 'blue', 'black', 'red', 'green']
。这在很多地方都被使用,包括模型和视图。我应该把它定义在哪里,只需要在一个地方就可以访问?我尝试过以下方法: - 在与它们最相关的model.rb文件中使用常量类变量,例如
@@COLOURS = [...]
。但我找不到一个合理的方法来定义它,以便我可以在我的视图中写Card.COLOURS
而不是像Card.first.COLOURS
这样的笨拙方式。
- 在模型上使用方法,例如def colours ['white',...] end
- 同样的问题。
- 在application_helper.rb中使用方法 - 这是我目前正在做的事情,但是helpers只能在视图中使用,不能在模型中使用。
- 我认为我可能在application.rb或environment.rb中尝试过某些东西,但那些似乎不是正确的方法(而且它们似乎也不起作用)。难道没有一种方法可以定义任何可以从模型和视图中访问的内容吗?我的意思是,我知道模型和视图应该是分开的,但在某些领域,它们肯定需要引用相同的领域特定知识吧?