我有一个ActiveRecord
类需要根据配置开关查看两个不同的表,所以我打算执行以下操作:
def table_name
config_is_on? ? :table1 : :table2
end
我想知道在针对此模型运行查询时是否始终调用table_name
方法:当配置更改时,应用程序不将重新启动,因此此值不能被缓存。
ActiveRecord
是否始终在应用程序启动/初始化期间评估table_name
或仅评估一次?如果它被缓存,我怎么强迫它每次评估table_name
?
答案 0 :(得分:0)
不仅是表名,还有列定义。您最好使用类似于Apartment gem的架构设置。根据请求的某些状态,数据库中的实际表搜索路径将设置为某个值。因此,您可以执行两个模式,一个使用第一个表,一个使用第二个(其余表可能只在一个模式中)并更改搜索路径,您将获得不同的数据。