Não diferencia maiúsculas de minúsculas find_or_create_by_whatever

Eu quero poder fazerArtist.case_insensitive_find_or_create_by_name(artist_name)[1] (e faça com que funcione no sqlite e no postgreSQL)

Qual é a melhor maneira de conseguir isso? No momento, estou apenas adicionando um método diretamente aoArtist classe (meio feia, especialmente se eu quero essa funcionalidade em outra classe, mas qualquer que seja):

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

[1]: Bem, o ideal seriaArtist.find_or_create_by_name(artist_name, :case_sensitive => false), mas isso parece muito mais difícil de implementar

questionAnswers(4)

yourAnswerToTheQuestion