10

でこのオプションを使用する場合config/application.rb:

config.active_record.schema_format = :sql

あなたがするとき:

rake db:migrate

のみをダンプしdb/structure.sqlます。オプションdb/schema.rbを使用しているので、を使用していないことはわかっていますが、どうすれば生成することもできますか?:sqlrake db:migratedb/schema.rb

RubyMine 4.5 と IntelliJ IDea 11db/schema.rbが列のオートコンプリートに使用するため、これが必要です。

4

1 に答える 1

10

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

(注:で終わるパスに評価されるため../、 in パスを使用します。)Rakefile__FILE__/Rakefile

于 2012-11-30T14:08:33.173 に答える