2016-08-16 2 views
1

Этот запрос не вызывает ошибки, но я уверен, что EXTRACT(EPOCH FROM relationships.created_at) не делает то, что он предназначен.Рельсы, как проверить, что делает SQL-запрос

last_check = @user.last_check.to_i 
@new_relationships = User.select('"rels_unordered".*') 
         .from("(#{@rels_unordered.to_sql}) AS rels_unordered") 
         .joins(" 
        INNER JOIN relationships 
        ON   rels_unordered.id = relationships.character_id 
        WHERE  EXTRACT(EPOCH FROM relationships.created_at) > #{last_check} 
        GROUP BY relationships.created_at 
        ORDER BY relationships.created_at DESC 
        ") 

Как проверить точно, что EXTRACT(EPOCH FROM relationships.created_at) производит? Журналы сервера не показывают его, они просто повторяют запрос. (По крайней мере, журналы действительно показывают, что #{last_check} правильно производит ряд, как 1471364015, поэтому я думаю, что проблема с кодом эпохи.)

ответ

1

Я бы просто пойти в MySQL и попробовать его:

SELECT EXTRACT(EPOCH FROM relationships.created_at) FROM relationships limit 0,1; 

и посмотрите, какой ответ вы получите. Измените выше, чтобы указать конкретную запись, если это необходимо.

Большей проблемой может быть параметр EPOCH; Я не уверен, что это действительно так. См. Ссылку mySQL для EXTRACT и ее parameters.

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