【发布时间】:2011-08-31 22:19:40
【问题描述】:
我正在尝试使用 set_table_name 在几个不同的表上使用一个通用模型。但是,似乎 set_table name 在每个应用程序会话中只对类有效一次。例如,在 rails 3 控制台(ruby 1.8.7)中会发生以下情况:
GenericModel.set_table_name "table_a"
puts GenericModel.table_name # prints table_a
pp GenericModel.column_names # prints the columns associated with table_a
GenericModel.set_table_name "table_b"
puts GenericModel.table_name # prints table_b
pp GenericModel.column_names # still prints the columns associated with table_a
目前我发现的解决方法是添加 .from(table_b) 以便查询不会因“table_b.id 不存在!”而出错因为查询仍然认为它是 FROM table_a。
其他人可以重现该问题吗?这是 set_table_name 的预期行为吗?
更新
添加
Model.reset_column_information
在 set_table_name 之后强制模型按我的预期工作。 在http://ar.rubyonrails.org/classes/ActiveRecord/Base.html#M000368中找到参考
【问题讨论】:
标签: ruby-on-rails ruby activerecord