现在,如果books表没有created\u at或updated\u at字段,则当前迁移可能会失败:
类addtimestampindex<;ActiveRecord::迁移
定义
删除索引:书籍:已创建
删除索引:书籍:更新
添加索引:书籍,:已创建
添加索引:书籍,:更新
终止
降下
删除索引:书籍:已创建
删除索引:书籍:更新
终止
终止
remove_index如果无法删除索引而不是引发错误,是否会选择以静默方式继续
您可以在迁移中使用index\u exists?方法来测试需要删除的索引是否确实存在
请查看此处的文档:
http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/index_exists%3F
我还没有测试过,但您应该能够使用以下内容:
类addtimestampindex<;ActiveRecord::迁移
定义
如果索引存在,是否删除索引:书籍:已创建
如果存在索引,则删除索引:书籍:更新的位置(:书籍:更新的位置)
添加索引:书籍,:已创建
添加索引:书籍,:更新
终止
降下
删除索引:书籍:已创建
删除索引:书籍:更新
终止
终止
虽然,从外观上看,你真的只想在它们不存在的情况下创建它们吗?
这可能更适合您的迁移:
类addtimestampindex<;ActiveRecord::迁移
定义
添加索引:书籍:创建于,除非索引存在(:书籍:创建于)
添加索引:书籍,除非索引存在(:书籍,更新于)
终止
降下
删除索引:书籍:已创建
删除索引:书籍:更新
终止
终止