Способ заказа буквенно-цифровой строки - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть ряд объектов модели со следующими значениями в столбце:

  • 2018-A-1 * +1004 *
  • 2018-A-10
  • 2018-А-2
  • 2018-А-100
  • 2018-A-11
  • 2018-В-1
  • 2018-B-10
  • 2018 В-2
  • 2018-B-100

Я бы хотел запросить в БД и получить результат в алфавитно-цифровом порядке. Я хотел бы получить результат в следующем порядке:

  • 2018-A-1
  • 2018-A-10 * +1032 *
  • ...

Вместо этого я получаю следующий заказ:

  • 2018-А-100
  • ...

Есть какой-нибудь умный способ достичь этого результата непосредственно с активной записью?

1 Ответ

0 голосов
/ 13 сентября 2018

Здесь я приведу данные вашего примера в виде массива:

example_array = %w{2018-A-1 2018-A-10 2018-A-2 2018-A-100 2018-A-11 2018-B-1 2018-B-10 2018-B-2 2018-B-100 2018-A-11}

Мне не совсем понятно, какой порядок вы пытаетесь получить. Если вы пытаетесь отсортировать только на основе цифр после последнего дефиса, это должно сработать:

example_array.sort_by{|e| e.split("-").last.to_i }

Если вы также намереваетесь включить букву перед окончательным числом, возможно, это то, что вы хотите:

example_array.sort_by{|e| [e.split("-")[-2], e.split("-").last.to_i] }
...