Quiero ser capaz de hacer Artist.case_insensitive_find_or_create_by_name(artist_name)
[1] (para que funcionen tanto en SQLite y PostgreSQL)Caso insensible find_or_create_by_whatever
Cuál es la mejor manera de lograr esto? En este momento estoy simplemente añadiendo un método directamente al Artist
clase (clase de 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, lo ideal sería Artist.find_or_create_by_name(artist_name, :case_sensitive => false)
, pero esto parece mucho más difícil de implementar
¿Por qué 'Artist.find_or_create_by_name (artist_name,: case_sensitive => false)' es más difícil de implementar? –
Si tuviera que usar MySQL, las coincidencias no distinguen entre mayúsculas y minúsculas. –
@KandadaBoggu porque 'find_or_create_by_name' se crea dinámicamente por' method_missing'? Tal vez no sea más difícil, ¿cómo lo implementarías? –