我有一个创建命名约束的迁移
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创建此索引?
答案 0 :(得分:1)
您是否尝试过运行rake db:structure:dump
?
schema.rb在语法和切换到structure.sql方面有一些限制。应该解决这个问题。
您可以通过将config.active_record.schema_format = :sql
添加到environment.rb来永久切换到structure.sql。