У меня есть массив priority = ['HIGH', 'MEDIUM', 'LOW']
, который используется для установки столбца базы данных «срочность». Я хотел бы получить данные, отсортированные по приоритету, хотя применение Task.order(:urgency)
возвращает результаты в алфавитном порядке (то есть HIGH, LOW, MEDIUM).Rails - порядок значений столбца (столбец приоритета)
Я использую PostgreSQL для базы данных.
Я бы (очевидно) хотел бы, чтобы они возвращались с высокого на низкий приоритет. Есть ли простой способ реализовать это, возможно, используя позиции значений в массиве?
, что система DB вы используете? MySQL? PostgreSQL? Что-то другое? – MrYoshiji
PostgreSQL - извините, должен был упомянуть. Обновится! – SRack
Это не дает прямого ответа на ваш вопрос о заказе, но для «срочности» или «статуса», если вы используете Rails 4.1+, рассмотрите возможность использования записей Active Record ([Примечания к выпуску] (http://guides.rubyonrails.org/ 4_1_release_notes.html # active-record-enums) и [Документация] (http://api.rubyonrails.org/v4.1.0/classes/ActiveRecord/Enum.html)). Плюсы в том, что они бесплатно предоставляют вам области, и вы можете поставить свою «срочность» в нужном вам порядке (фактический столбец db - целое число) - вы можете заказать на основе этого, который должен выполнять намного быстрее, чем SQL Оператор CASE. При желании я могу предоставить полный пример. – marksiemers