如何使耙分贝:迁移产生schema.rb使用时:SQL架构格式(How to make rake d

2019-07-04 08:08发布

如果使用在该选项config/application.rb

config.active_record.schema_format = :sql

然后当你这样做:

rake db:migrate

它只转储db/structure.sql 。 我知道这是不是使用db/schema.rb ,因为它是使用:sql选择,但你怎么能rake db:migrate产生db/schema.rb也?

我们需要的是因为的RubyMine 4.5和IntelliJ IDEA的11使用db/schema.rb为列自动完成。

Answer 1:

要生成/更新db/schema.rb即使使用:sql选项,你可以把这个在您Rakefile

Rake::Task["db:migrate"].enhance do
  if ActiveRecord::Base.schema_format == :sql
    Rake::Task["db:schema:dump"].invoke
  end
end

这应该是罚款理念和RubyMine的。

对于其他人,只是想为参考的文件,你可能需要将其重命名为其他类似db/schema.rb.backup ,所以它不会产生混淆。 要做到这一点:

Rake::Task["db:migrate"].enhance do
  if ActiveRecord::Base.schema_format == :sql
    Rake::Task["db:schema:dump"].invoke
    File.rename(File.expand_path('../db/schema.rb', __FILE__), File.expand_path('../db/schema.rb.backup', __FILE__))
  end
end

(注意:使用../在路径Rakefile因为__FILE__的计算结果为,在结束的路径/Rakefile )。



文章来源: How to make rake db:migrate generate schema.rb when using :sql schema format