上传CSV文件并解析到数据库时传递参数(Rails)

时间:2013-01-15 06:04:32

标签: ruby-on-rails parsing csv

我正在尝试允许用户将CSV文件导入应用程序的数据库。我一直关注importing csv and excel上的铁轨演员。我不确定如何传入excel或csv文件中找不到的参数。

例如,我正在使用设计进行身份验证,而不是用户必须在正在上传的文件上输入user_id,我希望将user_id设置为current_user.id。我怎么能这样做?

我的代码如下:

模型导入文件的方法

 def self.import(file)
    CSV.foreach(file.path, headers: true) do |row|
      Gear.create! row.to_hash
    end
  end

控制器操作

  def import
    Gear.import(params[:file])
    redirect_to :back, notice: "Gears Uploaded"
  end

1 个答案:

答案 0 :(得分:2)

一种选择是将用户ID传递到import - 方法,如下所示:

型号:

def self.import(file, user_id)
  CSV.foreach(file.path, headers: true) do |row|
    Gear.create! row.to_hash.merge(user_id: user_id)
  end
end

控制器:

def import
  Gear.import(params[:file], current_user.id)
  redirect_to :back, notice: "Gears Uploaded"
end

请注意,您将覆盖CSV中的现有user_id - 列,但如果我理解正确,这是预期的行为。