2012-10-01 39 views
3

这增加了索引但不让我设置名称。我怎样才能做到这一点?多列索引的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) =================== 

回答

6

,如果你看一下文档(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 

应该是你想要的。选项出现在列ID后面。