Не уверен, что это изменение в Rails 3.2+, но вместо:
model.where("id < ?", id).first
за предыдущий. Вы должны сделать
.where("id > ?", id).last
Кажется, что "порядок по" неправильный, поэтому сначала дайте вам первую запись в БД, потому что если у вас на 3 элемента меньше текущего, [1,3,4], то "первый" 1, но это последнее, что вы ищете. Вы также можете применить сортировку после, где, но это дополнительный шаг.