gpt4 book ai didi

ruby - 使用 :sql 模式格式时如何使 rake db :migrate generate schema. rb

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:40 24 4
gpt4 key购买 nike

如果在 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

对于 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< 结尾的路径.)

关于ruby - 使用 :sql 模式格式时如何使 rake db :migrate generate schema. rb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com