5

在 Rails 5 应用程序上工作,我想使用structure.sql而不是schema.rb(我们正在使用带有大量自定义 SQL 调用的 PostGIS...)。在config/initializers/database_options.rb我有以下内容:

# use structure.sql, not schema.rb
Rails.application.config.active_record.schema_format = :sql

如果我运行以下命令:

$ rake db:migrate

它生成db/schema.rb而不是 db/structure.sql

铁轨指南说:

有两种方法可以转储模式。这是由 config.active_record.schema_format 设置在 config/application.rb 中设置的,它可以是 :sql 或 :ruby。

我在这里缺少什么魔法?

4

2 回答 2

6

我认为你应该把你的 rails 组件配置放在之前Initializers。rails 应用程序按以下顺序初始化。

  • 配置/应用程序.rb
  • 特定于环境的配置文件
  • 初始化器
  • 后初始化器

您可以将配置config.active_record.schema_format = :sql放入config/application.rbconfig/environments/development.rb取决于您使用的环境。

那应该行得通。

于 2016-12-29T08:57:24.430 回答
3

在您的初始化程序中执行以下操作:

Rails.application.configure do
  config.active_record.schema_format = :sql
end
于 2019-04-15T16:52:28.823 回答