VitalyLiber
@VitalyLiber
web-developer

Как правильно импортировать данные csv файла в Rails без заголовков?

Импортирую с помощью этого не слишком элегантного кода в модели:

def self.import(file)
		CSV.foreach(file.path, :encoding => 'bom|utf-8', :quote_char => "|", headers: true, :col_sep => "\t") do |row|
			product = find_by_ones(row["ones"]) || new
			xxx = row['price'].sub(" ", "").sub(" ", "").sub(" ", "").sub(" ", "")
			h2 = {"price" => xxx}
			product.attributes = row.to_hash.except("title").merge(h2)
			product.save!
		end
	end


Как мне прописать заголовки непосредственно в коде?

Пытался сделать такой массив row2 = ["ones", row[0], "title", row[1], "price", row[2]]

Однако, к нему не применяется метод row2.to_hash

Быть может есть способ преобразовать массив снова в row?

Есть какие-нибудь идеи?
  • Вопрос задан
  • 274 просмотра
Решения вопроса 1
VitalyLiber
@VitalyLiber Автор вопроса
web-developer
Решение:
CSV.foreach(file.path, :encoding => 'bom|utf-8', :quote_char => "|", :col_sep => "\t", :headers=>:first_row) do |row|
			product_hash = {"ones" => row[0], "title" => row[1], "price" => row[2]}

			product = find_by_ones(product_hash["ones"]) || new

			xxx = product_hash['price'].sub(" ", "").sub(" ", "").sub(" ", "").sub(" ", "")
			h2 = {"price" => xxx}

			product.update_attributes(product_hash.except("title").merge(h2))
			product.save!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы