加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 23:05:31 所属栏目:百科 来源:网络整理
导读:如果在config / application.rb中使用此选项: config.active_record.schema_format = :sql 然后当你这样做: rake db:migrate 它只转储db / structure.sql.我知道它不使用db / schema.rb,因为它使用的是:sql选项,但是如何使用rake db:migrate generate db
如果在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结尾的路径.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读