Mayúsculas y minúsculas find_or_create_by_whatever

Quiero poder hacerArtist.case_insensitive_find_or_create_by_name(artist_name)[1] (y que funcione tanto en sqlite como en postgreSQL)

¿Cuál es la mejor manera de lograr esto? En este momento solo estoy agregando un método directamente alArtist clase (algo feo, especialmente si quiero esta funcionalidad en otra clase, pero lo que sea):

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

[1]: Bueno, idealmente seríaArtist.find_or_create_by_name(artist_name, :case_sensitive => false), pero esto parece mucho más difícil de implementar

Respuestas a la pregunta(4)

Su respuesta a la pregunta