簡體   English   中英

如何使用rake db:migrate生成schema.rb時使用:sql架構格式

[英]How to make rake db:migrate generate schema.rb when using :sql schema format

如果在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結尾的路徑。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM