昨天我遇到了一些不同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进行更改并查看我收到的错误中的更改,因此我知道新代码正在被查看。但是当我在新端口上启动应用程序时,错误就消失了。也许在轨道上有某种“硬重新编译”,我不知道?
答案 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"