Voglio essere in grado di fare Artist.case_insensitive_find_or_create_by_name(artist_name)
[1] (e farlo lavorare su entrambi SQLite e PostgreSQL)Case-insensitive find_or_create_by_whatever
Qual è il modo migliore per ottenere questo risultato? In questo momento sto solo l'aggiunta di un metodo direttamente al Artist
di classe (una specie di brutto, soprattutto se voglio questa funzionalità in un'altra classe, ma qualunque cosa):
def self.case_insensitive_find_or_create_by_name(name)
first(:conditions => ['UPPER(name) = UPPER(?)', name]) || create(:name => name)
end
[1]: Beh, idealmente sarebbe Artist.find_or_create_by_name(artist_name, :case_sensitive => false)
, ma questo sembra molto più difficile da implementare
Perché "Artista.find_or_create_by_name (artist_name,: case_sensitive => false)" è più difficile da implementare? –
Se si utilizza MySQL, le corrispondenze non fanno distinzione tra maiuscole e minuscole. –
@KandadaBoggu perché 'find_or_create_by_name' viene creato dinamicamente da' method_missing'? Forse non è più difficile - come lo implementeresti? –