好的,我有一个Rails 3应用程序,我使用CouchDB作为我的主数据库,以利用它的复制功能。
无论如何,我想要做的是将一些配置类型的东西存储在数据库中的1个文档中,并在应用程序在生产中启动时加载此配置文件的值一次,并且仅在用户转到管理面板时重新加载并明确要求它发生。我想通过触摸URL来清除加载的配置或其他东西。
我的想法是我只是在application_controller中创建一个before_filter,但由于我是rails的新手,我不知道这是否是正确的方法。
before_filter :get_config
private
def get_config
@config = Config.get('_id')
end
显然,这会运行我不想要或不需要的每个请求。有没有办法保存配置输出,所以我不必每次请求获取它,或者是否有更好的方法来执行此操作。
提前致谢。
答案 0 :(得分:1)
实际上我正在写一篇关于在rails中使用全局变量的正确方法的文章。这似乎是引入全局变量的情况,因为它们的值在不同用户之间共享。
在你的before_filter中,试试这个:
def get_config
$config ||= Config.get('_id')
end
仅当Config.get('_id')
为false或为零时,才会调用$config
。否则,$ config wiil保持不变。
棘手的部分是整个应用程序中存在的全局变量(以$
符号开头)。所以$config
随处可见(对于不小心的设计来说这将是一个问题!)
另一点是,正如你所说的你是rails的新手,我建议你在使用它之前阅读更多有关全局变量的内容,并且不要添加它。