之间有什么区别
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
答案 0 :(得分:28)
刚发现:index
选项仅供参考(t.references
或t.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