在迁移期间将表格从schema.rb中保留

Tar*_*rek 14 ruby-on-rails

作为我在运行测试时不重新加载巨大的持久表早期问题的后续内容,我需要在运行迁移时将此表保留在schema.rb之外.这个表直接从mysqldump加载,所以我不担心跟踪它.

那么,如何从schema.rb中保留一个特定的表?

Tar*_*rek 35

事实证明,这种情况有一个选择!

我发现它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 = []
Run Code Online (Sandbox Code Playgroud)

所以我所要做的就是在环境结束时坚持这个.rb:

ActiveRecord::SchemaDumper.ignore_tables = ["table_name"]
Run Code Online (Sandbox Code Playgroud)

ignore_tables选项将接受正则表达式.例如,要忽略以"MS"开头的所有表:

ActiveRecord::SchemaDumper.ignore_tables = [/^MS/]
Run Code Online (Sandbox Code Playgroud)