Хранить таблицу из schema.rb во время миграции

В качестве продолжения более раннего вопроса о том, чтобы не перезагружать огромную, постоянную таблицу при выполнении моих тестов, мне нужно оставить эту таблицу вне схемы. rb, когда я запускаю свои миграции. Эта таблица загружается непосредственно из mysqldump, поэтому я не беспокоюсь о ее отслеживании.

Итак, как я могу сохранить определенную таблицу из schema.rb?

Ответ 1

Оказывается там вариант для этой ситуации!

Я нашел его в activerecord-2.3.4/lib/active_record/schema_dumper.rb:

##
# :singleton-method:
# A list of tables which should not be dumped to the schema. 
# Acceptable values are strings as well as regexp.
# This setting is only used if ActiveRecord::Base.schema_format == :ruby
cattr_accessor :ignore_tables 
@@ignore_tables = []

Так что все, что мне нужно было сделать, это придерживаться этого в конце environment.rb:

ActiveRecord::SchemaDumper.ignore_tables = ["table_name"]

Параметр ignore_tables будет принимать регулярные выражения. Например, чтобы игнорировать все таблицы, начинающиеся с "MS":

ActiveRecord::SchemaDumper.ignore_tables = [/^MS/]

Ответ 2

Я думаю, что если вы сохраните миграцию, чтобы сгенерировать таблицу из своей папки миграции, то она не будет запущена и, в свою очередь, не будет использоваться для создания базы данных разработки, которая должна содержать ее из schema.rb.

Возможно, вам удастся каким-то образом запустить этот единственный перенос, если вам нужно за пределами задачи rake (нужно просто установить соединение, а затем запустить класс миграции)