在哪里/如何在Rails 3应用程序中编码常量

可能重复:
Ruby on Rails:在哪里定义全局常量?

我有兴趣在一个新的应用程序上做这个“Rails方式”。 我还想在某种上下文中引用常量,以使代码更具可读性。 我有一个应用程序,用户可以请求访问另一个用户的数据集。 此AccessRequest可以具有以下状态之一:

审查被拒绝批准

我可以看到这些值将来用于报告function,所以我想让它们成为常量以避免任何拼写或大小写问题。 我想我只是把这些放在config / initializers目录下的constants.rb文件中。

我想把这些称为AccessRequest :: REVIEW。 由于我已经有了一个名为AccessRequest的模型,所以把它放在那里是有道理的? 或者把它们包装在config / initializers目录下的constants.rb文件的类中? Rails方式是哪种方式?

你不需要在Rails 3中使用常量。最好使用Rails :: Application单例。

在你的application.rb中,你可以像下面这样定义你的constante:

module Yourapp class Application < Rails::Application config.access_request.review = 'xxx' end end 

在你的代码后,你可以打电话

 Yourapp::Application.config.access_request.review 

如果在每个环境中更改了值,那么只需在config/environments/production.rb或其他环境中定义config.xx即可。

迟到的答复,但发布作为这个答案仍然出现在search结果中。 把常数放在模型中是有意义的,因为常数直接与它有关。 使用Rails应用程序configuration来存储常量是不正确的。

根据application.rb中列出的注释:

 # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded 

从Rails 3开始,这仍然是有效的。