首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails: NameError:未初始化的常量

Rails: NameError:未初始化的常量
EN

Stack Overflow用户
提问于 2014-10-16 06:51:08
回答 7查看 161.8K关注 0票数 49

我有一个名为PhoneNumber的简单模型:

代码语言:javascript
复制
class PhoneNumber < ActiveRecord::Base
  validates :pnumber, presence: true, on: :create #=> { :message => " cannot be blank" }
  validates :pnumber, numericality: true, on: :create
end

我转到应用程序的根文件夹(包含app子文件夹的根文件夹)并启动控制台:

代码语言:javascript
复制
rails console --sandbox

当我尝试创建一个空的PhoneNumber时(我想得到一个错误消息,因为验证将失败),我得到了以下错误消息:

代码语言:javascript
复制
2.0.0-p451 :001 > PhoneNumber.new
NameError: uninitialized constant PhoneNumber
from (irb):1
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/lib/rails/commands/console.rb:90:in `start'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/lib/rails/commands/console.rb:9:in `start'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/lib/rails/commands/commands_tasks.rb:69:in `console'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/lib/rails/commands.rb:17:in `<top (required)>'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/lib/rails/app_rails_loader.rb:43:in `require'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/lib/rails/app_rails_loader.rb:43:in `block in exec_app_rails'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/lib/rails/app_rails_loader.rb:32:in `loop'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/lib/rails/app_rails_loader.rb:32:in `exec_app_rails'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/lib/rails/cli.rb:5:in `<top (required)>'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/bin/rails:9:in `require'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.1.5/bin/rails:9:in `<top (required)>'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/rails:23:in `load'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/rails:23:in `<main>'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/ruby_executable_hooks:15:in `eval'
from /Users/nnikolo/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/2.2.2.02.02.02.0.2.2.02.222222.2.02.02.0.2.2.022222222222222

看起来控制台并不知道这个模型。在普通的ruby中,您需要“请求”包含类的文件,但我认为rails控制台应该自动加载所有模型。这里发生什么事情?

EN

回答 7

Stack Overflow用户

发布于 2015-04-18 14:19:32

我得到了一个错误:

NameError: uninitialized constant

然后,我注意到我意外地创建了一个复数模型,因此我返回并将模型文件重命名为singular,还将模型文件中的类名更改为singular,这解决了问题。

票数 31
EN

Stack Overflow用户

发布于 2018-05-30 06:55:13

在将Rails 5.1升级到5.2之后,我开始遇到这个问题

我用以下方法解决了这个问题:

代码语言:javascript
复制
spring stop
spring binstub --all
spring start
rails s
票数 21
EN

Stack Overflow用户

发布于 2016-09-30 07:59:29

我在models目录中直接找到了一个文件,结果发现我在启动时没有正确地加载代码。我可以通过在我的development.rb文件中设置config.eager_load = true来解决这个问题。这使得我可以在控制台中使用这个类

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26393445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档