目前我需要将.CSV文件导入我的应用程序。
我发现此代码(由之前的开发人员制作)将用作导入程序。但我不知道如何运行这个脚本。与/ tasks不同吗?因为当我运行rake -T
时它没有显示。
require 'csv'
module Migrators
module Groups
class << self
def import!
Post.skip_callback :create, :before, :set_last_action_at
Post.skip_callback :create, :after, :create_memberhip_of_owner
CSV.foreach(Rails.root.to_s + '/db/lagacy/groups.csv', :headers => true) do |row|
group = Group.new(row.to_hash)
group.save(:validate => false)
end
# Update last_action_at to created_at
Group.where('last_action_at IS NULL').update_all('last_action_at = created_at')
Group.find_by_sql("SELECT setval('groups_id_seq', (SELECT MAX(id) FROM groups))")
Post.set_callback :create, :before, :set_last_action_at
Post.set_callback :create, :after, :create_memberhip_of_owner
end
end
end
end
答案 0 :(得分:0)
您可以为此创建一个rake任务。
使用以下语法在lib / tasks /中创建一个rake文件.rake:
namespace :yourtask_namespace do
desc "task description" (it is optional but recommended, this way if you do "rake -T yourtask" it will show your task)
task :yourtask_name => :environment do
Migrators::Groups.import!
end
end
然后你可以用&#34; rake your_task_namespace调用它:your_task_name&#34;使用可选的RAILS_ENV =如果它不是开发。
我在工作,不能指定更多样本。
希望它有所帮助。
以下是rake任务的示例:rake task
编辑:
如果您无法创建rake任务,则可以通过以下方式创建脚本文件:
添加到文件#!/usr/bin/env ruby
在文件的最后一行..调用要执行的方法,然后运行脚本。