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环境。 之后,您的用户对象将在范围内。