【问题标题】:Rails generate scaffold -> NameError: uninitialized constantRails 生成脚手架 -> NameError: uninitialized constant
【发布时间】:2012-05-24 13:53:31
【问题描述】:

我有这个愚蠢的东西......我确定我只是错过了一些明显的东西,但雅虎搜索并没有解决问题。

我所做的只是

rails new TestApp

cd TestApp
rails generate scaffold User name:string age:integer
bundle exec rake db:create
bundle exec db:migrate

效果很好。

但是当我去 IRB 时,没有用户!

u = User.first
    NameError: uninitialized constant User
    from (irb):3
    from /usr/bin/irb:12:in `<main>'

这里有什么问题?

干杯

【问题讨论】:

    标签: ruby-on-rails ruby rake nameerror rails-generate


    【解决方案1】:

    不要使用 irb,而是:

    rails console
    

    这将导入您项目的每个模型。

    【讨论】:

    • 我建议您将 User.create 位添加到您的答案中,因为它也是 OPs 代码中的一个问题。这样,其他有此问题的人将立即看到整个答案,而不仅仅是其中的一部分。
    • 感谢@vlasits的建议,但我认为问题的问题在于模型用户和每个rails依赖都没有被加载,所以如果你尝试使用irb会引发异常.如果你在 rails 控制台调用 User.first,你不会得到任何错误,只是一个空列表(或者一个空值,现在不记得了)
    • 是的。你是对的,错误的原因是没有加载 rails 应用程序,但 OP 预计 User.first 会产生非空响应(“但是当我去 IRB 时,没有用户!” )。不管怎样,适合自己,你的正确答案。
    • 没有用户(即类,而不是实例)
    【解决方案2】:

    您尚未创建用户,并且您使用的是普通的旧 irb 而不是 rails console

    打开rails console 并尝试:

    User.create(:name => "Jimmy", :age => 14)
    

    那就试试

    u = User.first
    

    【讨论】:

    • 是的,@davids 无论如何都应该得到它,因为我的第一个想法是 User.create 一个,只有在我看到他的回答之后,我才添加了 rails 控制台位。:) 你需要两个都开心,但他的建议更重要。
    猜你喜欢
    • 1970-01-01
    • 2016-12-26
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    相关资源
    最近更新 更多