23

和有什么区别

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
4

2 回答 2

33

刚刚发现该:index选项仅供参考(t.referencest.belongs_to)。对于“普通”列类型,此选项将被忽略(这就是为什么在您使用该选项时索引不会反映在您的 schema.db 中的原因:index)。

对于不太冗长的语法,有一种index类型:

t.index :column_name # extra options may be provided also
于 2014-07-15T06:51:27.127 回答
7

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

于 2013-12-13T04:32:09.287 回答