如何在rails中的两列上实现唯一索引

Mar*_*kus 80 activerecord ruby-on-rails

我有一个表,我正在尝试在两列上添加一个唯一索引.这些列也被编入索引.所以我的问题是,如果我只是删除仅为一列的索引或者我必须使用所有三个索引:

add_index "subscriptions", ["user_id"]
add_index "subscriptions", ["content_id"]
add_index "subscriptions", ["user_id"], ["content_id"], :unique => true
Run Code Online (Sandbox Code Playgroud)

shi*_*ara 161

add_index :subscriptions, [:user_id, :content_id], unique: true
Run Code Online (Sandbox Code Playgroud)

  • ruby中的@FrançoisBeausoleil`%w(user_id content_id)`只是创建了一个字符串数组,它对rails来说并不特殊.你可以用`"user_id content_id".split`做同样的事情,它仍在创建一个字符串数组.我相信你知道这个,这个评论只是让其他读者没有把这与铁轨错误联系起来:) (14认同)
  • 还有其他语法:add_index:subscriptions,[:user_id,:content_id] ,: unique => true add_index:subscriptions,%w(user_id content_id),:unique => true它们是相同的,只是不同的语法用于指定列. (6认同)