What is the difference between
t.boolean :is_live, index: true
and
add_index :table_name, :is_live
If there is no difference, how come only the add_index
is reflected in schema.rb. When I use index: true
, I can't actually see the index in schema.rb
. Should I only use the add_index
method.
When use the add_index
method, I can see this in my schema.rb
add_index "table_name", ["is_live"], name: "index_table_name_on_is_live", using: :blahblah
In short: both do the same job. ìndex: true` just saves you an additional line. Look here https://github.com/rails/rails/pull/5262#issuecomment-4329571
Just found out that the :index
option is for references only (t.references
or t.belongs_to
). For 'ordinary' column types this option is ignored (that's why indices are not reflected in your schema.db when you used the :index
option).
For less verbose syntax there is an index
type:
t.index :column_name # extra options may be provided also