получить оригинальный порядок при использовании attribute.keys - Ruby / Rails - PullRequest
0 голосов
/ 12 марта 2012

Я строю набор результатов, используя,

@time_spent = TimeEntry.find(:all,
                         :joins => "INNER JOIN sometable ON x = y",
                         :select =>"id, subject, spent_on")

И чтобы получить имена столбцов, я использую

@time_spent[index].attributes.keys

Но это дает мне имена столбцов в некотором случайном порядке.Как я могу получить в том же порядке, что и в предложении select.

Может ли кто-нибудь сказать, на каких базовых элементах упорядочиваются при использовании attribute.keys?

Любые подсказки будут полезны.Thnx.

1 Ответ

0 голосов
/ 12 марта 2012

Команда

@time_spent[index].attributes

Возвращает обычный хэш Ruby.Для ruby ​​1.8, согласно документам :

Порядок, в котором вы пересекаете хеш по ключу или значению, может показаться произвольным и, как правило, не будет в порядке вставки.

В ruby ​​1.9 это изменилось, и теперь согласно документам"Хэши перечисляют свои значения в порядке, в котором были вставлены соответствующие ключи."

Если вы действительно хотите узнать больше, вам придется копаться во внутренностях вашей версии Ruby, но в этом нет особого смысла.В ruby ​​1.8 вы вполне можете ожидать, что ключи будут выходить в бесполезном для вас порядке, и если они вам нужны в каком-то особом порядке, вам нужно будет реализовать это самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...