如果使用在该选项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
为列自动完成。
要生成/更新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