在 rails 迁移中创建约束
Create constraints in rails migrations
我有一个创建命名约束的迁移
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
目前的解决方案是回滚一些迁移并再次迁移,但这是一个非常肮脏的 hack
如何停止rails创建这个索引?
您是否尝试过 structure.sql 而不是 运行 rake db:structure:dump
schema.rb?
schema.rb 在语法方面有一些限制,切换到 structure.sql 应该可以解决这个问题。
您可以通过将 config.active_record.schema_format = :sql
添加到 environment.rb 来永久切换到 structure.sql。
我有一个创建命名约束的迁移
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
目前的解决方案是回滚一些迁移并再次迁移,但这是一个非常肮脏的 hack
如何停止rails创建这个索引?
您是否尝试过 structure.sql 而不是 运行 rake db:structure:dump
schema.rb?
schema.rb 在语法方面有一些限制,切换到 structure.sql 应该可以解决这个问题。
您可以通过将 config.active_record.schema_format = :sql
添加到 environment.rb 来永久切换到 structure.sql。