Какой самый простой способ упорядочить результаты запроса SQL на части строкового поля в Rails? - PullRequest
3 голосов
/ 05 декабря 2011

Рассмотрим таблицу с текстовым полем следующей формы:

"foo,bar"

РЕДАКТИРОВАТЬ: «bar» - первая строка после запятой.Запятая только одна.

Какой самый простой способ заказа по bar?Это может быть либо SQL (PostgreSQL), либо Ruby.

Ответы [ 2 ]

3 голосов
/ 05 декабря 2011
MyTable.all.sort_by { |r| r.my_text.match(/,(.*)$/)[1] }
1 голос
/ 05 декабря 2011

Вы можете сделать это внутри базы данных следующим образом:

M.order("substring(c from ',.*$')")

, где M - ваша модель, а c - рассматриваемый столбец.Вызов substring оставляет запятую в подстроке, но это не изменит сортировку, и сравнение запятых во время сортировки, вероятно, будет быстрее, чем попытка их удалить.Кроме того, эта форма PostgreSQL substring должна работать в 8.2 , поэтому она должна работать с общей базой данных Heroku.

...