API rails app通过REST

时间:2016-05-26 03:40:50

标签: ruby-on-rails api csv import

使用Postman上传到rails应用程序中的POST路径(仅限api),但不确定如何将其解析为rails应用程序。

我们有一个模型可以使用导入方法导入表,该方法采用CSV并循环以将其添加到数据库中。

然而不知道如何使用params []将文件通过控制器中的文件传递,因为我们将它作为二进制文件发布(我们已经在Postman中尝试了表单方式而且没有太多运气)。

我在控制器中

file = CSV.read(params[:file].path)

然而,这会产生一个我不太了解如何输入模型的数组(原始CSV文件中也有标题)

2 个答案:

答案 0 :(得分:0)

如何将csv上传到S3或Dropbox,然后将网址发布到服务器,服务器读取该CSV并导入到数据库。

以下是从网址中读取CSV的示例:

应用/服务/ process_csv.rb

require 'csv'
require 'net/http'

class ProcessCsv    
  def initialize(csv_url)
    @csv_url = csv_url
  end

  def proesss
    uri = URI(@csv_url)
    csv_text = Net::HTTP.get(uri)
    csv = CSV.parse(csv_text, headers: true)
    csv.each do |row|
      # Process row here and import to DB here
    end
  end
end

然后您可以在控制器中使用ProcessCsv,控制器的参数只是CSV文件的URL,而不是CSV数据!

答案 1 :(得分:0)

您可以使用foreach解析CSV。例如,下面给出的内容。

CSV.foreach(params[:file].path, headers: false) do |row|
  Model.create(name: row[0], email: row[1])
end