Ich möchte in der Lage sein Artist.case_insensitive_find_or_create_by_name(artist_name)
zu tun [1] (und es haben arbeiten sowohl auf SQLite und PostgreSQL)Case-unempfindlichen find_or_create_by_whatever
Was ist der beste Weg, dies zu erreichen? Im Moment ist ich einfach nur mit einer Methode direkt an die Artist
Klasse (Art hässlich, vor allem, wenn ich diese Funktion in einer anderen Klasse will, aber was auch immer):
def self.case_insensitive_find_or_create_by_name(name)
first(:conditions => ['UPPER(name) = UPPER(?)', name]) || create(:name => name)
end
[1]: Nun, im Idealfall wäre es Artist.find_or_create_by_name(artist_name, :case_sensitive => false)
, aber das scheint viel schwieriger zu implementieren
Warum ist 'Artist.find_or_create_by_name (artist_name,: case_sensitive => false)' schwerer zu implementieren? –
Wenn Sie MySQL verwenden, wird bei Übereinstimmung nicht zwischen Groß- und Kleinschreibung unterschieden. –
@KandadaBoggu weil 'find_or_create_by_name' dynamisch von' method_missing' erzeugt wird? Vielleicht ist es nicht schwieriger - wie würdest du es umsetzen? –