2012-03-12 10 views
0

私が使用して結果セットを構築していますが、- ルビー/ Railsの

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

とカラム名を取得するために、私は

@time_spent[index].attributes.keys 

を使用しています。しかし、それは私の列の名前を与えますいくつかのランダムな順序で。どのように私は選択句と同じ順序で得ることができます。

attributes.keysを使用しているときに、どのような基本要素が順序付けられているかを知ることができますか?

ヒントは参考になります。 Thnx。

+0

キーは私のselect節で命じられていますが、どのようなruby/railsバージョンを使用していますか? –

+0

好奇心が強い、カラム名を順番に取得する理由がありますか?あなたがそれらを順番に必要とする場合、私はそれを明示的に行う他の方法を探します。 – muffinista

+0

@injekt、私はレールバージョン2.3.14とruby 1.8.7 –

答えて

0

コマンド

@time_spent[index].attributes 

通常のRubyのハッシュを返します。ルビー1.8、the docsに従ってについて:

あなたがキーまたは値のいずれかでハッシュを通過する順序は 任意に見えるかもしれませんが、一般的に挿入順になりません。ルビー1.9で

、これは変更されている、今the docsに係る「ハッシュは対応するキーが挿入された順序でそれらの値を列挙する。」

もっと勉強したいと思えば、あなたのRubyバージョンの内部構造を掘り下げなければならないでしょうが、そこにはあまり意味はありません。 Ruby 1.8では、鍵があなたにとって役に立たない順序で出てくることをかなり安全に期待しています。もしあなたが何らかの特定の順序でそれらを必要とするならば、それをあなた自身で実装する必要があります。

+0

thnx –

関連する問題