我希望能够做到Artist.case_insensitive_find_or_create_by_name(artist_name)
[1](并让它在 sqlite 和 postgreSQL 上都可以工作)
实现这一目标的最佳方法是什么?现在我只是直接向Artist
类添加一个方法(有点难看,特别是如果我想在另一个类中使用这个功能,但无论如何):
def self.case_insensitive_find_or_create_by_name(name)
first(:conditions => ['UPPER(name) = UPPER(?)', name]) || create(:name => name)
end
[1]:嗯,理想情况下是这样Artist.find_or_create_by_name(artist_name, :case_sensitive => false)
,但这似乎更难实现