FasterCSV を使用して、一部のデータを mysql から csv ファイルにエクスポートします。出力された CSV の列をクエリの select ステートメントと同じ順序にしたいと考えています。
例:
rows = Data.find(
:all,
:select=>'name, age, height, weight'
)
headers = rows[0].attributes.keys
FasterCSV.generate do |csv|
csv << headers
rows.each do |r|
csv << r.attributes.values
end
end
CSV 出力:
height,weight,name,age
74,212,bob,23
70,201,fred,24
.
.
.
CSV 列を select ステートメントと同じ順序にしたい。明らかに、属性メソッドは機能しません。私のcsvファイルの列がselectステートメントと同じ順序になるようにするための最良の方法に関するアイデアはありますか? 多くのデータを取得し、パフォーマンスが問題になります。select ステートメントは静的ではありません。rows.each ループ内で列名をループできることはわかっていますが、ちょっと汚いようです。