2015-07-13 2 views
-1

Я экспортирую CSV из разных источников, что очень сложно сортировать, прежде чем вставлять его в CSV.Может ли Rails сортировать CSV-файл?

csv = CSV.generate col_sep: '#' do |csv| 
    ... adding a few columns here 
end 

Теперь было бы здорово, если бы я смог сортировать этот CSV по 2-й колонке. Это возможно?

ответ

3

Если вы пытаетесь сортировать перед записью, это зависит от вашей структуры данных, в которой мне нужно будет увидеть ваш код немного больше. Для чтения в CSV-файл, вы можете преобразовать его в хэш и сортировать по имени заголовка даже:

rows = [] 
CSV.foreach('mycsvfile.csv', headers: true) do |row| 
    rows << row.to_h 
end 

rows.sort_by{ |row| row['last_name'] } 

Редактировать использовать sort_by, благодаря максимальной Вильямса.

+0

У вас также есть метод sort_by, который немного приятнее: 'rows.sort_by {| row | row ['last_name']} ' –

+0

А, хороший звонок, я часто забываю об этом XD – agmcleod

+0

. В этом случае это также не применяется, но вы можете это сделать, если сортируете по методу, который даже более аккуратный: 'rows.sort_by (&: size)', который эквивалентен 'rows.sort_by {| row | row.size} ' –

Смежные вопросы