Rails常量查找

时间:2011-03-15 06:02:35

标签: ruby-on-rails ruby activerecord

我有一个关于在Rails项目中设置常量的问题。

从Dan Chak的Enterprise Rails一书中,他解释说,如下面的常量查找代码只在应用程序启动时执行一次。但是,查看日志,我认为每次使用常量时它都会运行。

class Role < ActiveRecord::Base
  USER = Role.find_by_key('user')
  ADMIN = Role.find_by_key('admin')
end

这绝对允许更清晰的代码,因为我可以做类似的事情:

current_user.role = Role::ADMIN

作为替代方案,我阅读了ActiveSupport::Memoizable,但我想在更改代码之前确认此设置会导致多个数据库查找。

感谢您的投入!

2 个答案:

答案 0 :(得分:5)

每次加载环境时,该代码才会执行​​一次。这通常会在开发和测试环境中发生,但每次在生产中生成应用服务器时只会发生一次。

答案 1 :(得分:2)

如何将它放在config / initializers / constants.rb中?

确保只在app start上调用一次

刚刚放

USER = Role.find_by_key('user')
ADMIN = Role.find_by_key('admin')

您可以在应用中使用USER / ADMIN常量