Ответ 1
Короче: обе выполняют ту же работу. "ndex: true" просто сохраняет дополнительную строку. Смотрите https://github.com/rails/rails/pull/5262#issuecomment-4329571
В чем разница между
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
Короче: обе выполняют ту же работу. "ndex: true" просто сохраняет дополнительную строку. Смотрите https://github.com/rails/rails/pull/5262#issuecomment-4329571
Только что выяснилось, что опция :index
предназначена только для ссылок (t.references
или t.belongs_to
). Для "обычных" типов столбцов эта опция игнорируется (поэтому индексы не отражаются в вашем schema.db, когда вы использовали параметр :index
).
Для менее подробного синтаксиса существует тип index
:
t.index :column_name # extra options may be provided also