2014-09-17 1 views
0

데이터베이스에서 CSV 문서를 만들어야합니다. 내가Mongoid에서 CSV 문서를 만들 때 Ruby가 순서대로 열을 넣습니다.

csv<< mymodel.attributes.values.sort_by! { |h| header.index(h.keys[0]) 

을 할 때 그래서 그것은 작동하지 않습니다 나는 특정 순서에 열을 구성 할 나는이 순서의 템플릿을이 템플릿은 헤더

header = ["header1", "header2", "header3", "header4", "header5"] 
record = [{"header4" =>"value4"}, {"header3" =>"value3"}, {"header5"=>"value5"}, {"header1"=>"value1"}, {"header2"=>"value2"}] 

I need to get array like tis 
record = [{"header1" =>"value1"}, {"header2" =>"value2"}, {"header3"=>"value3"}, {"header4"=>"value4"}, {"header5"=>"value5"}] 

만의 배열로 저장

답변

0

mymodel.attributes을 호출하면 속성 이름 (문자열)을 값에 매핑하는 Hash back이 표시됩니다. 물론

{ 
    'header1' => 'value1', 
    'header2' => 'value2', 
    'header3' => 'value3', 
    'header4' => 'value4', 
    'header5' => 'value5' 
} 

는, 순서는 따라 가지 MongoDB를 나오는 방법 : 당신의 속성 이름이 header5 통해 header1을 경우 다음 mymodel.attributes은 다음과 같이 될 것입니다. 지정된 순서대로 해시에서 값 묶음을 추출하는 가장 쉬운 방법은 values_at을 사용하는 것입니다.

mymodel.attributes.values_at(*header)