【问题标题】:NameError: uninitialized constant UserNameError:未初始化的常量用户
【发布时间】:2016-02-25 01:26:31
【问题描述】:

我正在使用带有 Rails 作曲家的 rails-devise 应用程序。在我尝试与控制台中的模型交互之前,一切似乎都很好。 我尝试了命令:

rails console
User.all

我从控制台收到以下错误:

NameError: uninitialized constant User
from (irb):2
from /Users/msarr/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/commands/console.rb:110:in `start'
from /Users/msarr/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/commands/console.rb:9:in `start'
from /Users/msarr/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/commands/commands_tasks.rb:68:in `console'
from /Users/msarr/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /Users/msarr/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/commands.rb:17:in `<top (required)>'
from /Users/msarr/Desktop/deployment/YouServe/bin/rails:9:in `<top (required)>'
from /Users/msarr/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /Users/msarr/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from -e:1:in `<main>'

这是我的 Gemfile:

  source 'https://rubygems.org'
  ruby '2.2.1'
  gem 'rails', '4.2.5.1'
  gem 'sass-rails', '~> 5.0'
  gem 'uglifier', '>= 1.3.0'
  gem 'coffee-rails', '~> 4.1.0'
  gem 'jquery-rails'
  gem 'turbolinks'
  gem 'jbuilder', '~> 2.0'
  gem 'carrierwave'
  gem 'mini_magick'
  gem 'fog'                  
  gem 'administrate'
  gem 'devise'
  gem 'devise_invitable'
  gem 'foundation-rails', '~> 5.5'
  gem 'high_voltage'
  gem 'simple_form'

 group :development, :test do
  gem 'byebug'
  gem 'sqlite3'
end
group :development do
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'better_errors'
  gem 'hub', :require=>nil
  gem 'quiet_assets'
  gem 'rails_layout'
end

group :production do
 gem 'pg'
 gem 'rails_12factor'
 gem 'unicorn'
end

【问题讨论】:

  • 你跑rails generate devise User ; rake db:migrate了吗?
  • 我试过了,它说找不到生成器'devise'
  • 那么你还没有在你的 gemfile 中包含gem 'devise' 然后运行bundle
  • Devise 实际上包含在 gem 文件中。这一切都很奇怪。身份验证有效,除了在控制台中访问模型之外的一切都是问题

标签: ruby-on-rails devise console


【解决方案1】:

只是重新启动 spring 加载器。

spring stop

然后运行rails c它工作正常

【讨论】:

  • 这对我有用,但如果能获得更多关于发生了什么的详细信息或文档会很棒吗?有什么长期的解决办法吗?
  • @Meekohi spring 是一个预加载器。是否要使用它是可选的,但它可以加快开发速度。 see rails/spring
【解决方案2】:

您项目的架构是什么样的?如果您的模型周围有任何模块或命名空间(例如APIv1),那么您必须使用命名空间调用它们,即V1::User.all

【讨论】:

    【解决方案3】:

    确保在您的 Gemfile 中包含 gem 'devise' 并运行 bundle

    你还需要运行以下命令

    rails generate devise:install
    rails generate devise User
    rake db:migrate
    

    现在您应该可以在您的rails c 中访问User.all

    【讨论】:

    • Devise 实际上包含在 gem 文件中。这一切都很奇怪。身份验证有效,除了在控制台中访问模型之外的一切都是问题所在。 rails g devise 用户命令导致“找不到生成器 'devise'”
    • 你在group :production do 后面有gem 'devise' 或gemfile 中的什么吗?这是我认为您无法在控制台中使用生成器的唯一原因,因为您说它已安装并正在工作
    • 感谢您的帮助。我已经添加了我的 gem 文件。当我执行 bundle show devise 时,我得到 /Users/me/.rvm/gems/ruby-2.2.1/gems/devise-3.5.6
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多