ActiveRecord缓存table_name吗?

时间:2012-11-06 09:12:34

标签: ruby-on-rails ruby-on-rails-3 activerecord

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

def table_name
  config_is_on? ? :table1 : :table2  
end

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

ActiveRecord是否始终在应用程序启动/初始化期间评估table_name或仅评估一次?如果它被缓存,我怎么强迫它每次评估table_name

1 个答案:

答案 0 :(得分:0)

不仅是表名,还有列定义。您最好使用类似于Apartment gem的架构设置。根据请求的某些状态,数据库中的实际表搜索路径将设置为某个值。因此,您可以执行两个模式,一个使用第一个表,一个使用第二个(其余表可能只在一个模式中)并更改搜索路径,您将获得不同的数据。