Неожиданные результаты для запроса Rails 3 ActiveRecord - PullRequest
0 голосов
/ 18 января 2012

В моем приложении Rails 3 есть объект UserAction, который я использую для хранения информации о действиях, предпринятых на моем сайте.

Я пытаюсь отфильтровать результаты, чтобы получить только те, для которых установлен атрибут данныхк определенному значению, но по какой-то причине он всегда возвращает пустой массив.

Вот пример из консоли, показывающий первую запись, запрос, который возвращает ее на основе атрибута 'action', и тот, которыйне работает для атрибута «data»:

> UserAction.first
UserAction Load (39.6ms)  SELECT "user_actions".* FROM "user_actions" LIMIT 1
=> #<UserAction id: 1, source: "127.0.0.1", action: "Failed login attempt", data: "admin", created_at: "2012-01-12 11:26:38", updated_at: "2012-01-12 11:26:38"> 

> UserAction.where('action = ?', "Failed login attempt")
UserAction Load (1.2ms)  SELECT "user_actions".* FROM "user_actions" WHERE (action = 'Failed login attempt')
 => [#<UserAction id: 1, source: "127.0.0.1", action: "Failed login attempt", data: "admin", created_at: "2012-01-12 11:26:38", updated_at: "2012-01-12 11:26:38">] 

> UserAction.where('data = ?', "admin")
UserAction Load (96.5ms)  SELECT "user_actions".* FROM "user_actions" WHERE (data = 'admin')
=> [] 

Почему Rails возвращает пустой массив для второго запроса, когда явно есть запись, где данные равны «admin»?Я должен отметить, что в настоящее время я обновляю приложение с Rails 2.3.5, так что оно может быть чем-то новым, введенным в Rails 3 (я использую Rails 3.1.2).Кроме того, я начал использовать Postgresql в разработке вместо Sqlite, который я использовал раньше.

Заранее спасибо.

1 Ответ

0 голосов
/ 29 января 2012

Я выяснил ответ (вид):

Параметр данных был сериализован, и по какой-то причине, когда ActiveRecord в Rails 3 десериализовывает строку, он не равен строке, которую вы ищете, по вашему запросу.

Я удалил сериализацию, и она заработала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...