2015-10-24 3 views
2

Допустим, у модели есть следующие заголовки (ID, Name), но у каждого есть CSV-файл с дополнительными заголовками, например, но не ограничиваясь (ID, Name, Price , Место нахождения). Как изменить файл Model.rb, чтобы пропустить заголовки, которые не существуют?Rails CSV import, где файл имеет заголовки не в модели

def self.import(file) 
CSV.foreach(file.path, headers: true) do |row| 
    product = find_by_id(row["id"]) || new 
    product.attributes = row.to_hash.slice(*accessible_attributes) 
    product.save! 
end 
end 

ответ

0

Код, указанный ниже, будет создавать новый продукт или редактировать существующий. Вы можете добавить необходимые атрибуты внутри блока find_or_create_by.

def self.import(file) 
    CSV.foreach(file.path, headers: true) do |row| 
    self.find_or_create_by(id: row["id"]) do |product| 
     product.name = row["name"] 
    end 
    end 
end 

Если вы только когда-либо будет нуждаться идентификатор и имя, которое вы могли бы сделать что-то подобное в рельсах 4.

def self.import(file) 
    CSV.foreach(file.path, headers: true) do |row| 
    self.where(:id => row["id"], :name => row["name"]).first_or_create 
    end 
end 

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

  • Нет связанных вопросов^_^