Rails Rake Task – 访问模型类

我想定义一个Ruby(1.9.2)-on-Rails(3.0.5)rake任务,它将用户添加到User表中。 该文件如下所示:

#lib/tasks/defaultuser.rake require 'rake' namespace :defaultuser do task :adduser do u=User.new u.email="bob@example.com" u.password="password" u.save u.errors.each{|e| pe} end end 

然后我会调用这个任务

 > rake defaultuser:adduser 

我在Rails控制台的:adduser任务中testing了代码,并且工作正常。 我testing了rake任务,只能运行

 print "defaultuser:adduser" 

在任务的主体,它工作正常。

但是,当我把它们结合起来时,它抱怨说

 rake aborted! uninitialized constant User 

我试过了

 require File.expand_path('../../../app/models/user.rb', __FILE__) 

在rake文件中的命名空间定义之上,但是这不起作用。 我有

 rake aborted! ActiveRecord::ConnectionNotEstablished 

我需要做什么以便我在Rails任务中拥有对Rails控制台中User模型类的相同访问权限?

你近乎:)

 #lib/tasks/defaultuser.rake require 'rake' namespace :defaultuser do task :adduser => :environment do ... end 

请注意:使用:environment,在调用rake任务之前设置必要的Rails环境。 之后,您的用户对象将在范围内。