我要动态地请求期间改变的ActiveRecord模型类的表名。Rails 3/ActiveRecord:如何在请求期间动态切换/更改表名称?
例如,存在具有类似的结构(列)很多表:
mydb:
sample_data_12222
sample_data_12223
sample_data_12224
sample_data_12225
...
所以,我想要做的是...
_1。定义基本模型类如下:
class SampleData < ActiveRecord::Base
_2。像请求期间更改目标表:
def action_method
SampleData.set_table_name "sample_data_#{params[:id]}"
@rows = SampleData.all
看来,上面的代码是正确的,如果是在非线程环境中运行(客运/ mod_rails等)。 但它不是线程安全,所以它可能不会在线程环境(像JRuby的机架)工作。
而且我试图创建内交类是这样的:
def action_method
@model_class = Class.new(SampleData)
@model_class.set_table_name "sample_data_#{params[:id]}"
@rows = @model_class.all
但它造成内存泄露,但请求完成后的内交模型类,不使用任何更多。 :(
有没有更好的办法来做到这一点
谢谢你的想法,我一直在寻找类似的东西(但更简单一点)。希望我的答案将(仍然)帮助你@ – Veger
谢谢,并且很抱歉标记你的答案被接受。 ;)我达到了类似于你的答案的东西。 – kaorukobo