在Rails应用程序中从CSV文件上传和导入数据?

时间:2014-02-26 05:44:12

标签: ruby-on-rails ruby csv

我是Ruby on Rails的新手。

我想编写一个模块,用于在我的应用程序中上传CSV文件。另外,我想将该文件中的数据导入到我的Rails应用程序中的一个表中。

在我的应用程序中有一个名为“Book”的模型,它有四个字段:nameauthorpublication_datepublisher_name

我想让用户能够使用以下格式上传CSV文件:

  • name
  • 的第一列
  • author
  • 的第二列
  • publication_date
  • 的第三名
  • publisher_name的第四名。

此外,我想添加验证,以便仅在文件具有预期格式时才会进行上传。

1 个答案:

答案 0 :(得分:0)

你需要一个FasterCSV gem才能做到这一点。首先安装它,然后在你的模型中这样做:

    require 'csv'

       validates_format_of :book, :with => /^.+\.(csv)$/,
       :message => 'A .csv file is required.'

    records = CSV.foreach('yourpath/tocsvfile/filename.csv').map do |row|     
    Book.create!({
        :name              => row[0], 
        :author            => row[1], 
        :publication_date  => row[2], 
        :publisher_name    => row[3],
    })
end

有关CSV的更多信息,您可以找到它here

希望它有帮助!