多列索引的Rails迁移 - 如何命名索引?

Mic*_*ant 3 ruby migration ruby-on-rails

这会添加索引,但不允许我设置名称.我怎样才能做到这一点?

class AddIndexEventScheduleidDayStarttime < ActiveRecord::Migration
  def up
    add_index(:events, [:schedule_id, :day , :start_time], {:name => "event_schedule_by_day_and_time_index"})
  end 

  def down
    remove_index(:events, {name: "event_schedule_by_day_and_time_index"})
  end 
end

$ rake db:migrate
==  AddIndexEventScheduleidDayStarttime: migrating ============================
-- add_index(:events, [:schedule_id, :day, :start_time], {:name=>"event_schedule_by_day_and_time_index"})
   -> 0.2210s
==  AddIndexEventScheduleidDayStarttime: migrated (0.2212s) ===================
Run Code Online (Sandbox Code Playgroud)

Doo*_*oon 8

如果你查看文档(http://api.rubyonrails.org/classes/ActiveRecord/Migration.html),你会发现add_index是 add_index(table_name, column_names, options)

所以编写代码如下:

  def up
    add_index(:events,[:schedule_id, :day , :start_time],name: "event_schedule_by_day_and_time_index")
  end
Run Code Online (Sandbox Code Playgroud)

应该是你想要的.选项位于列ID之后.