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.referencesまたはt.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 に答える