You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:55:18