ruby – 如何使用rake db:migrate生成schema.rb时使用:sql架构格式

前端之家收集整理的这篇文章主要介绍了ruby – 如何使用rake db:migrate生成schema.rb时使用:sql架构格式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果在config / application.rb中使用此选项:
config.active_record.schema_format = :sql

然后当你这样做:

rake db:migrate

它只转储db / structure.sql.我知道它不使用db / schema.rb,因为它使用的是:sql选项,但是如何使用rake db:migrate generate db / schema.rb呢?

我们需要它,因为RubyMine 4.5和IntelliJ IDea 11使用db / schema.rb来自动完成列.

解决方法

生成/更新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

这对IDea和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结尾的路径.)

猜你在找的Ruby相关文章