Я пытаюсь использовать set_table_name, чтобы использовать одну универсальную модель для пары разных таблиц.Однако создается впечатление, что имя set_table работает с классом только один раз за сеанс приложения.Например, в консоли 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?
UPDATE
Добавление
Model.reset_column_information
после set_table_name заставляет модель работать так, как я ожидаю.Ссылка найдена в http://ar.rubyonrails.org/classes/ActiveRecord/Base.html#M000368