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结尾的路径.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |