作为earlier question about not reloading a huge, persistent table when I run my tests的后续内容,我需要在运行迁移时将此表保留在schema.rb之外。这个表直接从mysqldump加载,所以我不担心跟踪它。
那么,如何从schema.rb中保留一个特定的表?
答案 0 :(得分:34)
原来这种情况有一个选择!
我在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 = []
所以我所要做的就是在环境结束时坚持这个.rb:
ActiveRecord::SchemaDumper.ignore_tables = ["table_name"]
ignore_tables
选项将接受正则表达式。例如,要忽略以“MS”开头的所有表:
ActiveRecord::SchemaDumper.ignore_tables = [/^MS/]
答案 1 :(得分:0)
我认为如果您继续迁移以从迁移文件夹中生成表格,那么它将无法运行,反过来也不会用于生成开发数据库,这应该使其不受限制schema.rb。
如果你需要在rake任务之外(你应该只是建立连接,然后在迁移类上运行),你可能会想出一些运行单一迁移的方法。