sqlite3 auf Schienen: create_table using collate nocase

Verwenden von Rails 4.2.0 mit Ruby v2.3.0p0

Ich möchte Indizes erstellen, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird, da bei den meisten meiner Suchvorgänge die Groß- und Kleinschreibung nicht berücksichtigt wird und nicht jedes Mal eine vollständige Tabellensuche durchgeführt werden muss.

So versuche ich in meinen create_table-Migrationen, Zeilen hinzuzufügen, wie zum Beispiel:

add_index :events, :name, :COLLATE => :NOCASE

Und wenn ich migriere bekomme ich:

== 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

Wie kann ich mithilfe von SQLITE3 und Rails einen Index erstellen, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird?

UPDATE ------------------------

Dank an Anthony 's Hilfe, ich sehe, dass Rails Collate / Collation im Sqlite3-Code noch nicht unterstützen.

So habe ich versucht, es in meiner Migration manuell zu schreiben, basierend auf der Syntax, die Rails generieren würde, aber mit der hinzugefügten Sortieroption:

execute("CREATE INDEX 'index_events_on_name' ON 'events' ('name' COLLATE NOCASE);")

Dies erstellt den Index gemäß Sqlite3 ordnungsgemäß, aber die Datei Schema.rb ist jetzt natürlich falsch.

Und was noch wichtiger ist, es scheint immer noch keine Vergleiche zwischen Groß- und Kleinschreibung zu geben, wenn ich suche:

Event.where("name == ?",name)
Event.find_by_name(name)

Wie kann ich Rails davon überzeugen, den von mir erstellten Index zu verwenden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage