如何创建一个控制器来将CSV文件数据导入到rails中的多个表中?

时间:2015-11-19 17:17:51

标签: ruby-on-rails

如何将CSV文件行中的数据导入rails中的多个表?

我正在尝试编写一种上传和导入CSV文件的方法,该文件包含需要使用smarter_csv gem转到现有数据库中不同表的数据。

2 个答案:

答案 0 :(得分:0)

对于控制器中的所有内容来说,这可能不是一个好主意。您可能希望启动后台作业以在上载后处理文件。在后台作业中,您可以编写逻辑来解析CSV并写入多个表。

smarter_csv将使用CSV.parse函数将csv解析为哈希数组。

需要更多信息才能更好地回答您的问题。

答案 1 :(得分:0)

这个问题需要更具体地说明需要什么。但是,假设您需要的是上传和处理".csv"文件的代码,您可以修改此代码段以满足您的需求

def self.import(file)
    CSV.foreach(file.path, headers: true) do |row|
        Listing.create!( :price => row[0], 
                         :status => row[1], 
                         :beds => row[2], 
                         :baths => row[3], 
                         :category_attributes => {:unit_number => row[4]} ) 
    end
end

该代码段假定您使用的是两个表格或模型 - ListingsCategories。而且你已经在这些模型上建立了适当的关系