Chcę być w stanie zrobić Artist.case_insensitive_find_or_create_by_name(artist_name)
[1] (i mają działać zarówno SQLite oraz PostgreSQL)Case-niewrażliwy find_or_create_by_whatever
Jaki jest najlepszy sposób, aby osiągnąć ten cel? Teraz jestem po prostu dodanie metody bezpośrednio do Artist
klasy (rodzaj brzydki, szczególnie jeśli chcę tę funkcję w innej klasy, ale cokolwiek):
def self.case_insensitive_find_or_create_by_name(name)
first(:conditions => ['UPPER(name) = UPPER(?)', name]) || create(:name => name)
end
[1]: Dobrze, idealnie byłoby Artist.find_or_create_by_name(artist_name, :case_sensitive => false)
, ale wydaje się to znacznie trudniejsze do wdrożenia
Dlaczego 'Artist.find_or_create_by_name (artist_name,: case_sensitive => false)' trudniejsze do wdrożenia? –
Jeśli używałeś MySQL, dopasowania nie uwzględniają wielkości liter. –
@KandadaBoggu, ponieważ 'find_or_create_by_name' jest tworzone dynamicznie przez' method_missing'? Może nie jest trudniej - jak byś to zaimplementował? –