导入CSV并分配给当前用户ruby

时间:2016-07-20 14:07:46

标签: ruby-on-rails ruby csv

我正在尝试导入CSV文件并将导入分配给当前用户。因此,它会将user_id添加到csv import的每一行。

我遗失了一些东西,因为它仍然找不到用户并将其添加到行...

控制器:

 def import
    Inventory.import(params[:file], current_user.id)
    redirect_to root_url, notice: "Inventory imported."
  end

方式:

class Inventory < ApplicationRecord
    belongs_to :user

def self.import(file, user_id)
  allowed_attributes = [ "user_id", "id","description","part_number","price","created_at","updated_at", "alternate_part_number", "condition_code", "qty", "mfg_code", "serial_number", "part_comments"]
  spreadsheet = open_spreadsheet(file)
  header = spreadsheet.row(1)
  (2..spreadsheet.last_row).each do |i|
    row = Hash[[header, spreadsheet.row(i)].transpose]
    inventory = find_by_id(row["id"]) || new
    inventory.attributes = row.to_hash.select { |k,v| allowed_attributes.include? k }
    inventory.save!
  end
end

我最终得到了这个错误: import error ruby

感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

(...) inventory = (...) inventory.user_id = user_id inventory.save!

然而,你最好发送给用户而不是它的id:

控制器: Inventory.import(params[:file], current_user)

模型:

 def import(file, user)
  inventory = Inventory.new
  inventory.attributes = {}
  inventory.user = user
  inventory.save!
end