【问题标题】:Cannot load my model in console rails无法在控制台导轨中加载我的模型
【发布时间】:2017-06-28 17:41:19
【问题描述】:

我试图查看我的任务表上的内容,但突然间我收到了uninitialized constant 错误。我想不出为什么会这样。该页面工作正常。顺便说一句,我的模型中确实有一个 task.rb。

server@server:~/www/railsapp/$ rails c production
Running via Spring preloader in process 27137
Loading production environment (Rails 5.1.1)
irb(main):001:0> ActiveRecord::Base.connection.tables
   (0.3ms)  SET NAMES utf8,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'),  @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
=> ["ar_internal_metadata", "schema_migrations", "tasks", "users"]
irb(main):002:0> Task.all
NameError: uninitialized constant Task
    from (irb):2
irb(main):003:0> 

我在下面发布了我的问题的解决方案

【问题讨论】:

  • 文件Task.rb是否存在于app/model文件夹中?
  • 你换Task模特了吗?
  • 是的,我有一个任务模型。
  • @Alejandro Montilla 没有。但是,由于某种原因,它又开始工作了。我改变了一些 JavaScript 的东西,我做了一个 bundle exec rake assets:precompile RAILS_ENV=production 然后我重新启动了乘客,问题又回来了。
  • @myhouse 试试这个Rails.application.eager_load!

标签: ruby-on-rails ruby ruby-on-rails-5


【解决方案1】:

我终于找到了问题的解决方案。是 Spring 引起了这个问题。我在下面提供了 StackOverflow 问题的链接。

我不得不在终端中运行:

spring stop

现在,当我启动控制台时,它可以读取我的模型。

The link I found for solution is here

【讨论】:

    【解决方案2】:

    app/models文件夹中创建一个文件task.rb

    app/model/task.rb

    class Task < ActiveRecord::Base
      
    end
    

    【讨论】:

    • 我有这个。我正在使用 Rails 5.1
    【解决方案3】:

    这意味着由于某种原因,rails 没有加载您的模型(类名)所在的文件。

    如果您的“页面”正常工作,我想您更改了应用程序中的某些内容但没有重新开始生产(旧代码的生产工作)。 @Alejandro Montilla 询问更改但您没有回答

    【讨论】:

    • 我只是回复亚历杭德罗。是的,我的模型表现得很奇怪。我重新启动了应用程序,由于某种原因,控制台无法读取模型,但页面可以。
    猜你喜欢
    • 1970-01-01
    • 2014-08-27
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 2015-02-16
    相关资源
    最近更新 更多