>> c = Course.find(3).course_steps.order(:position)
=> [#<CourseStep id: 9, step_id: 4, course_id: 3, position: 1, created_at: "2011-03-08 20:57:44", updated_at: "2011-03-08 20:57:44">, #<CourseStep id: 10, step_id: 5, course_id: 3, position: 2, created_at: "2011-03-08 20:57:45", updated_at: "2011-03-08 20:57:45">, #<CourseStep id: 8, step_id: 2, course_id: 3, position: 3, created_at: "2011-03-08 20:57:42", updated_at: "2011-03-08 20:57:42">]
Мне нужно найти поле course_step, которое идет после идентификатора 9 (что происходит с course_step с идентификатором 10) (если оно существует)
Мне также нужно найти предыдущее (если оно существует)
Я знаю, что мог бы сделать это вручную, просматривая результаты, но я бы предпочел сделать это с помощью SQL.
СЛЕДУЮЩИЙ sql запрос будет:
SELECT * FROM course_steps WHERE position >=POSITION_OF_STEP ORDER BY position LIMIT 1 OFFSET 1
ПРЕДЫДУЩИЙ sql запрос будет:
SELECT * FROM course_steps WHERE position <= POSITION_OF_STEP ORDER BY position DESC LIMIT 1 OFFSET 1
Я думаю, что понял!