我在使用Rails 3.1.1和Ruby 1.9.2时遇到了上述错误。我花了最后一小时看,我发现的主要内容是:
clear_helpers
可能导致帮助程序无法加载。我的代码没有使用它,我不相信我安装的宝石也是。
在routes.rb中缺少devise_for
。我有devise_for :users
我的用户模型中缺少'database_authenticatable'。我有我的users.rb:
设计:database_authenticatable,:registerable, :可恢复的,:可记住的,:可跟踪的,:可验证的
我的行为完全符合this email thread中描述的内容,但signed_in? :user
对我不起作用。但是,Devise.mappings
会显示用户映射。
关于什么可能出错的任何想法?即使是对current_user的破解也会对我有所帮助,因为我必须尽快运行一些功能。
答案 0 :(得分:1)
3号让我感到奇怪。您的模型文件名为users.rb吗?你的班级宣言是Users < ActiveRecord::Base
吗?如果是这样,请将它们更改为以下内容。
users.rb =&gt; user.rb
User < ActiveRecord::Base
答案 1 :(得分:1)
所以我将此标记为社区维基,因为解决方案很简单。
我正在调用调试器(我曾使用以下代码检查current_user
class ApplicationController < ActionController::Base
protect_from_forgery
debugger
filter {|c| Authorization.current_user = c.current_user}
end
Rails使会话和请求对象可用于控制器实例。调试器在self == ApplicationController
的上下文中被调用,它应该是self == #<MainController...>
。
简而言之,请确保您不是在控制器定义中调用它,而是在控制器实例中调用它。