Я работаю над проектом RoR (RoR 3.1 и Ruby 1.9.2p290), где я столкнулся с серьезной странной проблемой с запросами, не находящими вещи, даже если я знаю, что материал должен быть найден .
Для простоты, скажем, есть модель Car
с атрибутом color
. У меня есть несколько записей в БД, все с черным цветом. Получение всех записей и их отображение в виде работает нормально, и я не вижу ничего странного.
@cars = Car.all
Вот из консоли, где я получаю первую машину и проверяю, равен ли цвет черному:
ruby-1.9.2-p290 :022 > Car.first.color == "Black"
Car Load (0.2ms) SELECT "cars".* FROM "cars" LIMIT 1
=> true
Это прекрасно работает, как вы можете видеть. Теперь, если я попытаюсь выполнить запрос с find_by_color
, он вернет nil
! Этого не должно быть.
ruby-1.9.2-p290 :021 > Car.find_by_color("Black")
Car Load (0.3ms) SELECT "cars".* FROM "cars" WHERE "cars"."color" = 'Black' LIMIT 1
=> nil
То же самое относится к любому типу запроса, где я проверяю цвет, например
find(:all, :conditions => { :color => "Black" })
Я перепробовал все, что мог придумать, чтобы попробовать, но сейчас я понятия не имею, что может вызвать что-то подобное.
Есть идеи, что это может быть или с чего начать?
Я благодарен за любую помощь в решении этой проблемы, прежде чем я сойду с ума;)
EDIT
Цвета взяты из файла CSV, который я импортировал через загрузку файла и анализ его в записях автомобилей. Может ли быть что-то с кодировкой или что-то подобное? Также я использую SQLite в разработке на случай, если это поможет.
UPDATE
Я попробовал другой запрос, который работает !!
Car.where('color like ?', "Black")
Возвращает все записи. Очень странно. В чем может быть разница между этими запросами?