@eldar_web

Как в Ruby on Rails выводить по данные из модели по определенному порядку?

К примеру, есть модель User.
Я делаю список таким образом:
@users = User.where(id: [1,3,2])
Хочу чтобы при цикле (@users.eacho do |item|) выводился в таком порядке, в котором я указал, то есть, чтобы сперва первый, потом третий и второй.
Но при цикле выводится с сортировкой по id, то есть, по порядку выводится: 1, 2, 3.
Как можно решить проблему?
  • Вопрос задан
  • 389 просмотров
Пригласить эксперта
Ответы на вопрос 2
@chronic86
Ruby on Rails junior
Довольно странно, сам по себе метод each ничего не сортирует. Сортировка скорее всего происходит средствами ORM, когда Вы вызываете 'where'. Если данные у Вас вытягиваются по id, то попробуйте использовать 'find' или напишите запрос на SQL.
Что то вроде этого
User.find([1,3,2])
или
User.find_by_id([1,3,2])

Вы можете проверить действительно ли сортировка происходит в момент вызова 'where' выполнив запрос в irb.
пы.сы. В моих проектах find работает быстрее чем where
Ответ написан
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
User.where(id: [1,3,2]).order("case id when 1 then 1 when 3 then 2 when 2 then 3 end")

Но лучше создать отдельное поле position
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы