【问题标题】:user_signed_in? is causing uninitialized constant error with Mongoid / Devise用户签名?使用 Mongoid / Devise 导致未初始化的常量错误
【发布时间】:2011-11-20 18:35:37
【问题描述】:

昨天我在使用不同的 ODM 时遇到了一些问题,所以我决定改用 Mongoid。 wiki tutorial 非常彻底,所以看起来值得一试。我非常仔细地浏览了 wiki 文章,但可能遗漏了一些东西。这可能是因为我昨天在应用程序中使用了不同的 ODM。无论如何,现在我收到一个错误:

uninitialized constant User::Mongoid

使用这行代码(将其放入以确认问题出在此方法):

<% if user_signed_in? -%>
5:     Hello user
6:     <% end -%>

user_signed_in 是一种设计方法。我怀疑设计实际上并没有加载,但我不确定下一步该做什么。

我的 gem 文件有 gem "devise", "1.5.0" 并且我运行了 bundler install,我可以看到该设计正在安装。我已经确认我的应用程序控制器与示例中的应用程序控制器完全匹配。当我运行 rails server 时,我的应用程序启动时没有问题。当我执行load 'app/models/user.rb' 时,应用程序中的所有模型都正确加载。文件 config/initializers/devise.rb 有require 'devise/orm/mongoid'。我已验证我的用户模型与教程中的模型完全匹配。

接下来我应该看什么?

更新:这已修复,但我仍然想念如何解决。我在一个新端口上启动了该应用程序。这就是全部。我正在对我的 index.html.erb 进行更改,并在我收到的错误中看到这些更改,因此我知道正在看到新代码。但是当我在新端口上启动应用程序时,错误就消失了。也许我不知道rails中有某种“硬重新编译”?

【问题讨论】:

    标签: ruby-on-rails devise mongoid


    【解决方案1】:

    首先,确认完全重启 Rails 实例后错误仍然存​​在。

    我想在用户模型中你有这样的东西:

    class User
      include Mongoid::Document
    
      devise :database_authenticatable, ...
    end
    

    检查 config/initializers/devise.rb:

      # ==> ORM configuration
      # Load and configure the ORM. Supports :active_record (default) and
      # :mongoid (bson_ext recommended) by default. Other ORMs may be
      # available as additional gems.
      require 'devise/orm/mongoid'
    

    还要检查 devise gem 是否在 Gemfile 中的 mongoid gem 下:

    gem "mongoid", "~> 2.3.2"
    gem "bson_ext"
    gem "devise", "~> 1.4.9"
    

    【讨论】:

    • 检查,检查,非常接近。 gemfile 并不完全匹配——版本和顺序略有不同。改变它以匹配你的并没有解决它。
    • 我忘了加restart application。顺便说一句,您使用哪种应用服务器:webrick、unicorn、...?
    • 杂种。我不知道重启命令,我会在以后尝试。
    • 这不是命令。我的意思是您必须重新启动应用程序服务器才能初始化新设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2017-08-08
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多