2012-03-12 11 views
0

내가 사용 결과 집합을 구성하고을- 루비/레일

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

그리고 열 이름을 얻기 위해 내가

@time_spent[index].attributes.keys 

을 사용하고 있습니다 그러나 그것은 나에게 열 이름을 제공합니다 임의의 순서로. select 절과 같은 순서로 어떻게 얻을 수 있습니까?

attributes.keys를 사용할 때 어떤 기본 요소를 주문했는지 알 수 있습니까?

힌트가 도움이 될 것입니다. Thnx.

+0

키는 나를위한 select 절에 따라 정렬됩니다. 어떤 루비/레일 버전을 사용하고 있습니까? –

+0

단지 호기심, 열 이름을 순서대로 얻으려는 강력한 이유가 있습니까? 왜냐하면 당신이 그것들을 순서대로 필요로한다면, 저는 그것을 명시 적으로하는 다른 방법을 모색 할 것이기 때문입니다. – muffinista

+0

@injekt, 레일즈 버전 2.3.14와 루비 1.8.7 –

답변

0

명령

@time_spent[index].attributes 

는 일반 루비 해시를 돌려줍니다. the docs에 따라 루비 1.8의 경우 :

당신이 임의의 을 보일 수도 키 또는 값 중 하나에 의해 해시를 통과, 일반적으로 삽입 순서가 아닌지되는 순서.

루비 1.9

가이 변경되고 지금 the docs 항있다 "해시가 대응하는 키가 삽입 된 순서로 그 값을 열거."

더 많은 것을 배우고 싶다면 Ruby 버전의 내부 구조를 파헤쳐 야하지만 그다지 중요하지 않습니다. 루비 1.8에서는 키가 도움이되지 않는 순서로 나오기를 기대할 수 있으며, 특정 순서로 키가 필요할 경우 직접 구현해야합니다.

+0

thnx입니다. –