2014-10-23 2 views
0

Если я делаю Model.find_by_column(column_data), то возвращается Nil, но при копировании сгенерированного SQL в консоль rails db (postgresql db shell) появляется запись.Rails find_by возвращает ноль, но запись существует

Кто-нибудь знает, что может быть неправильным?

Пример кода:

garden = Garden.find_by_name("Zen Garden") 
puts garden.inspect 

Возвращает:

SELECT "gardens".* FROM "gardens" WHERE "gardens"."name" = 'Zen Garden' LIMIT 1 
Nil 

Но в базе данных:

SELECT "gardens".* FROM "gardens" WHERE "gardens"."name" = 'Zen Garden' LIMIT 1; 
id | name |   created_at   |   updated_at   
----+------------+----------------------------+---------------------------- 
82 | Zen Garden | 2014-10-23 03:56:25.614274 | 2014-10-23 03:56:25.614274 

Что может быть не так?

+0

Предполагаете, что вы использовали Garden.find_by в консоли rails? Причина, по которой я спрашиваю, заключается в том, что мне интересно, является ли среда одинаковой в обоих контекстах. Вряд ли, но возможно. – stefvhuynh

+0

Чтобы отказаться от этой опции, попробуйте следующее: Garden.where ('name LIKE?', '% Zen Garden%'). Возможно, есть место в конце или в начале имени. Какую версию Rails вы используете? –

ответ

0

Проблема была в том, что я скопировал create() строку И я также случайно принял update_all вместо update_attributes в CodeIntel.

Смежные вопросы