执行Rake任务时遇NameError: uninitialized constant User错误求助
解决Rake任务中
uninitialized constant User错误 你遇到的问题核心是自定义Rake任务未加载完整Rails环境,导致无法识别ActiveRecord模型User,而控制器中能正常执行是因为控制器本身就运行在Rails环境上下文里。
解决方案
修改Rake任务的定义,让它依赖Rails内置的:environment任务,确保执行任务前先加载所有Rails核心组件、模型和配置:
namespace :users do desc "Gets Users from Xero" task xero_users: :environment do # 添加:environment依赖 require 'xero-ruby' creds = { client_id: '...', client_secret: '...', grant_type: 'client_credentials' } xero_client = XeroRuby::ApiClient.new(credentials: creds) @token_set = xero_client.get_client_credentials_token # save @token_set accessToken = @token_set["access_token"] users = xero_client.accounting_api.get_users('').users users.each do |user| userEmailAddress = user.email_address User.create(email: userEmailAddress) end end end
补充检查项
如果修改后仍报错,可以排查以下两点:
- 确认
User模型文件存在于app/models/user.rb,文件名必须是小写单数格式 - 模型类定义正确,应为
class User < ApplicationRecord
内容的提问来源于stack exchange,提问作者Jldawson 12
相关产品推荐
相关产品推荐

