我试图添加一个唯一的索引,该索引由四个关联表的外键创建:

add_index :studies,
  ["user_id", "university_id", "subject_name_id", "subject_type_id"],
  :unique => true

数据库对索引名的限制导致迁移失败.以下是错误消息:

表"studies"上的索引名"Index_studies_on_user_id_and_university_id_and_subject_name_id_and_subject_type_id"过长;限制为64个字符

我该怎么办?我可以指定不同的索引名吗?

推荐答案

:name选项设置为add_index,例如:

add_index :studies,
  ["user_id", "university_id", "subject_name_id", "subject_type_id"], 
  unique: true,
  name: 'my_index'

如果在create_table块中的references上使用:index选项,它将使用与add_index相同的选项哈希作为其值:

t.references :long_name, index: { name: :my_index }

Ruby-on-rails相关问答推荐

搜查升级到 4.0.0 和 ActionText::RichText

如何通过graphqlMutations 从rails销毁当前用户会话

API Rails 路由,令牌是路由的一部分

显示每个 rspec 示例的运行时

耙路由错误缺少:路由定义上的操作键

fields_for 表单构建器对象为零

如何在 Linux 上使用 Ruby 2.0 改进独角兽进程之间的内存共享

如何在 Rails 上生成 AuthenticityToken

设计和强大的参数

如何在不删除项目本身的情况下删除单个 HABTM 关联项目?

Rails 3. 构建 oauth2 提供程序

Rails 引擎中的迁移?

如何在特定时区(最好是我的应用程序的默认时区,而不是 UTC)中创建新的 DateTime 对象?

为什么 Ruby on Rails 使用 http://0.0.0.0:3000 而不是 http://localhost:3000?

设计:在注册期间禁用密码确认

Sidekiq 在 docker-compose 上的 127.0.0.1:6379 (Errno::ECONNREFUSED) 上连接到 Redis 时出错

以最Ruby 风格计算 ActiveSupport:TimeWithZone 天数的差异?

在 Rails 中命名布尔列

如何为 Rails 控制器添加延迟以进行测试?

未捕获的 ReferenceError:未定义 ReactDOM