Как заказать строковые столбцы по-разному - PullRequest
1 голос
/ 06 марта 2009

У меня есть ассоциация has_many, подобная этой:

has_many  :respostas_matriz_alternativas, :class_name => 'RespostaMatrizAlternativa',
          :order => 'respostas_matriz.codigo asc',
          :include => :resposta_matriz

Ну, фрагмент, который имеет значение, это "порядок". Codigo - это столбец varchar, который в большинстве случаев будет содержать числовые значения. Чтобы показать эти данные, мне нужно упорядочить их по коду, но когда у меня есть только цифры, порядок становится неудобным, что-то вроде:

1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, ...

Что вы предлагаете мне решить?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 06 марта 2009

Я не знаю, что вы можете сделать, если столбец будет содержать сочетание строк и чисел, но если столбец всегда будет числовым, вы можете использовать что-то вроде:

:order => 'cast(respostas_matriz.codigo as unsigned) asc'
3 голосов
/ 09 ноября 2012

Принятый ответ работает для SQLite, но не для PostgreSQL, мне пришлось использовать один из встроенных типов для достижения одного и того же результата с разными базами данных:

order: 'cast(respostas_matriz.codigo as integer) asc'
0 голосов
/ 07 марта 2009

Я просто новичок в Ruby, но не могли бы вы использовать что-то вроде следующего, чтобы разбить строку на массив более мелких строк, а затем преобразовать каждую строку в целое число.

Передо мной нет моего рубидока, но что-то вроде

:order => 'respostas_matriz.codigo.split.map {|s| s.to_i}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...