Rails ActiveRecord :: Migration index:true和add_index有什么区别?

时间:2013-11-11 19:21:44

标签: activerecord migration rails-migrations

之间有什么区别
t.boolean :is_live, index: true

add_index :table_name, :is_live

如果没有区别,那么为什么只有add_index反映在schema.rb中。当我使用index: true时,我实际上无法在schema.rb中看到该索引。我应该只使用add_index方法吗?

使用add_index方法时,我可以在schema.rb

中看到这一点
add_index "table_name", ["is_live"], name: "index_table_name_on_is_live", using: :blahblah

2 个答案:

答案 0 :(得分:28)

刚发现:index选项仅供参考(t.referencest.belongs_to)。对于普通'列类型此选项被忽略(这就是使用:index选项时未在schema.db中反映索引的原因。)

对于较不详细的语法,有一个index类型:

t.index :column_name # extra options may be provided also

答案 1 :(得分:7)

简而言之:两者都做同样的工作。 ìndex:true`只是为您节省了额外的一条线。看这里https://github.com/rails/rails/pull/5262#issuecomment-4329571