sqlite3 en rieles: create_table usando cotejar nocase
Usando rails 4.2.0 con ruby v2.3.0p0
Quiero crear índices que no distingan entre mayúsculas y minúsculas, ya que la mayoría de mis búsquedas distinguen entre mayúsculas y minúsculas y no quiero tener que hacer una búsqueda completa en la tabla cada vez.
Entonces, en mis migraciones create_table, intento agregar líneas como:
add_index :events, :name, :COLLATE => :NOCASE
Y cuando migro me sale:
== 20150515163641 CreateEvents: migrating =====================================
-- create_table(:events)
-> 0.0018s
-- add_index(:events, :submitter, {:COLLATE=>:NOCASE})
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
Unknown key: :COLLATE. Valid keys are: :unique, :order, :name, :where, :length, :internal, :using, :algorithm, :type
¿Cómo puedo crear un índice que no distinga entre mayúsculas y minúsculas en mis archivos de migración usando SQLITE3 y rails?
ACTUALIZACIÓN ------------------------
Gracias aAntonioAyuda, veo que los rieles aún no admiten la clasificación / clasificación en el código Sqlite3.
Así que intenté escribirlo manualmente en mi migración en función de la sintaxis que generaría Rails, pero con la opción de clasificación agregada:
execute("CREATE INDEX 'index_events_on_name' ON 'events' ('name' COLLATE NOCASE);")
Esto crea el índice correctamente, de acuerdo con Sqlite3, pero el Schema.rb ahora está mal, por supuesto.
Y lo más importante, todavía no parece estar haciendo comparaciones entre mayúsculas y minúsculas cuando busco:
Event.where("name == ?",name)
Event.find_by_name(name)
¿Cómo puedo convencer a los rieles para que usen el índice que creé?