Rails Rake任务删除表并从csv导入

我正在尝试编写一个rake任务来删除一个表并从csv重新填充它。 目的是按计划从另一个系统获取数据,并使用我的rails应用程序的管理界面中的按钮导入新数据。 此新数据将覆盖表中的旧数据。

我不确定如何做到这一点所以我正在玩rake任务。 到目前为止,我可以导入新数据,但我无法弄清楚如何首先删除表。 到目前为止我的代码是:

namespace :csvimportproducts do desc "Import Products CSV Data." task :import_products_csv_data => :environment do ActiveRecord::Migration.drop_table products require 'csv' csv_file_path = '/home/jay/workspace/db/import_tables/products.csv' CSV.foreach(csv_file_path) do |row| p = Product.create!({ :product_id => row[0], :product_name => row[1], } ) end end end 

目前我在本地存储csv文件,但稍后打算让管理员将其作为csv文件上传。

有任何想法吗? 我的错误是:

 rake aborted! undefined local variable or method `products' for main:Object /lib/tasks/import_products_csv.rake:6:in `block (2 levels) in ' Tasks: TOP => csvimportproducts:import_products_csv_data 

尝试通过运行自定义sql命令截断表:

 namespace :csvimportproducts do desc "Import Products CSV Data." task :import_products_csv_data => :environment do ActiveRecord::Base.connection.execute("TRUNCATE TABLE products") require 'csv' csv_file_path = '/home/jay/workspace/db/import_tables/products.csv' CSV.foreach(csv_file_path) do |row| p = Product.create!({ :product_id => row[0], :product_name => row[1], } ) end end end