在迁移过程中,我有以下几点:

create_table :model_with_a_long_name do |t|
  t.references :other_model_with_an_equally_long_name, index: true
end

这会为Postgres生成一个名称过长的索引.

有没有办法手动指定索引名(而不单独添加整数列和索引)?

如下所示:

create_table :model_with_a_long_name do |t|
  t.references :other_model_with_an_equally_long_name, index: true, index_name: 'model_and_other'
end

?

推荐答案

根据Rails code for references,你可以这样做,为indexHash提供选项,你需要的选项称为:name,所以:

t.references :my_field, index: { name: 'my_index_name' }

Ruby-on-rails相关问答推荐

使用FactoryBot测试ActiveStorage的RSpec请求规范

如何从 New Relic 交易中获取 TraceId?

如何在 Rails 中声明动态路由范围/命名空间变量?

向现有控制器添加操作(Ruby on Rails)

Rails 发现获取 ActiveRecord::RecordNotFound

如何在 Ruby on Rails 中的 cookie 上设置 HttpOnly 标志

没有图像时如何在回形针中显示隐藏图像

如何在 routes.rb 中使用 301 或 302 进行重定向

如何在 Rails 应用程序中使用长 id?

为什么我要使用 unicorn 或 thin 而不是 WEBrick 用于开发目的?

奇怪的406 不可接受错误

如何将自定义路由添加到资源路由

格式化日期对象以显示人类可读的日期

Ruby on Rails 基本概念总结

Rails 5:重命名表迁移

使用 rvm 更新 ruby​​ 版本后收到警告消息Path set to RVM

rails 单数资源还是复数?

如何强制 RSpec 测试失败?

按照给定 ID 数组的顺序按 ID 查找模型记录

没有UTC的Rails 3默认日期时间格式