如果在中使用此选项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
also?
我们需要它,因为 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
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)