0

我有一个创建命名约束的迁移

execute(%Q{
  ALTER TABLE dreamflore_clients
    ADD CONSTRAINT unique_clients UNIQUE( client, no_adresse );
})

但是在 中schema.rb,rails 把这部分变成了一个索引

add_index "dreamflore_clients", ["client", "no_adresse"], name: "unique_clients", unique: true, using: :btree

问题是我们正在使用Apartment并且新创建的租户有一个索引而不是约束,我们正在使用 postgreSQL 功能ON CONFLICT ON CONSTRAINT

目前的解决方案是回滚一些迁移并再次迁移,但这是一个非常肮脏的黑客

如何停止创建此索引的rails?

4

1 回答 1

1

您是否尝试通过运行来使用 structure.sql 而不是 schema.rb rake db:structure:dump

schema.rb 在语法方面有一些限制,切换到 structure.sql 应该可以解决这个问题。

您可以通过添加config.active_record.schema_format = :sql到 environment.rb 来永久切换到 structure.sql。

于 2016-06-01T14:41:35.963 回答