1

我有一个ActiveRecord类需要根据配置开关查看两个不同的表,所以我打算执行以下操作:

def table_name
  config_is_on? ? :table1 : :table2  
end

我想知道在table_name针对此模型运行查询时是否始终调用该方法:配置更改时不会重新启动应用程序因此无法缓存此值。

在应用程序启动/初始化期间是否ActiveRecord总是评估或只评估一次?table_name如果它被缓存了,我如何强制它table_name每次都进行评估?

4

1 回答 1

0

不仅是表名,还有列定义。您最好使用像 Apartment gem 这样的模式设置。根据请求的某些状态,数据库中的实际表搜索路径被设置为某个值。所以你可以做两个模式,一个与第一个表,一个与第二个(其余表可能仅在一个模式上)并更改搜索路径,您将获得不同的数据。

于 2012-11-06T09:16:59.290 回答