2014-10-09 3 views
0

Ниже представлен импортер CSV. Он работает отлично, но я бы сделал его более надежным, определяя строку динамически.Динамическое определение атрибута CSV

Как заменить атрибут «имя» на атрибут, который я определил ранее перед выполнением CSV?

For example:- name: row[1] --> name: row[attribute] 

В приведенном выше примере подсказках об ошибке не указаны «нет неявного преобразования строки в целое число», которое, очевидно, верно.

Ниже приведен код.

import_attribute = import_dimension.import_attributes.first 
attribute = import_attribute.name 

CSV.foreach(Rails.root.join('tmp','uploads', csv_path), col_sep: import_source.csv_delimiter, 
    row_sep: :auto, skip_blanks: true, headers: false) do |row| 

    target.create company: self.import_source.company, code: row[0], name: row[1] 
end 
+0

Вы можете создать столбец CSV для атрибутов списка конфигурации в виде хэша в приложении. Но он будет работать только в том случае, если: у вас есть заголовок в CSV, который вы импортируете? и Являются ли имена заголовков уникальными и не будут изменяться с CSV на CSV? – Surya

+0

Например: заголовок в одном CSV: «Код компании, название компании» и заголовок в другом CSV: «Код, имя» не будет работать. – Surya

ответ

0

Вы можете использовать хэш, который отображает атрибуты в их позиции в массиве.

positions = {code: 0, name: 1} 

, а затем

target.create company: self.import_source.company, code: row[positions[:code]], name: row[positions[:name]] 
Смежные вопросы