user_signed_in?使用Mongoid / Devise导致未初始化的常量错误

时间:2011-11-20 18:35:38

标签: ruby-on-rails devise mongoid

昨天我遇到了一些不同ODM的问题,所以我决定先看看Mongoid。 wiki tutorial非常彻底,所以看起来值得一试。我仔细阅读了维基文章,但可能遗漏了一些东西。也许这种情况正在发生,因为我昨天在应用程序中有一个不同的ODM。无论如何,现在我收到了一个错误:

uninitialized constant User::Mongoid

使用这行代码(把它放进去确认这个方法就是问题):

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

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

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

接下来我应该看什么?

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

1 个答案:

答案 0 :(得分:1)

首先,确认在完全重新启动rails实例后仍然发生错误。

我认为在User模型中你有这样的东西:

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'

同时检查设计gem是否在Gemfile中的mongoid gem下:

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