Groß- / Kleinschreibung wird nicht berücksichtigt. Find_or_create_by_whatever

Ich möchte in der Lage sein zu tunArtist.case_insensitive_find_or_create_by_name(artist_name)[1] (und muss auf SQLite und PostgreSQL funktionieren)

Was ist der beste Weg, um dies zu erreichen? Im Moment füge ich nur eine Methode direkt zu der hinzuArtist Klasse (irgendwie hässlich, besonders wenn ich diese Funktionalität in einer anderen Klasse haben möchte, aber was auch immer):

  def self.case_insensitive_find_or_create_by_name(name)
    first(:conditions => ['UPPER(name) = UPPER(?)', name]) || create(:name => name)
  end

[1]: Nun, idealerweise wäre es soArtist.find_or_create_by_name(artist_name, :case_sensitive => false), aber das scheint viel schwieriger zu implementieren