设计:未定义的方法`user_signed_in?’ for ApplicationController:Class
我在使用Rails 3.1.1和Ruby 1.9.2时遇到了上述错误。 我花了最后一小时看,我找到的主要内容是:
-
ApplicationController中的
clear_helpers
可能导致帮助程序无法加载。 我的代码没有使用它,我不相信我安装的gem也是。 -
缺少
devise_for
中的devise_for。 我有devise_for :users
-
在我的Users模型中缺少’database_authenticatable’。 我有我的users.rb:
设计:database_authenticatable,:registerable,:recoverable,:rememberable,:trackable,:validatable
-
我的行为完全匹配除了
signed_in? :user
之外的电子邮件线程中描述的signed_in? :user
signed_in? :user
也不适合我。 但是,Devise.mappings
确实显示了用户映射。
关于什么可能出错的任何想法? 即使是对current_user的破解也会对我有所帮助,因为我必须尽快运行一些function。
3号让我觉得奇怪。 您的模型文件名为users.rb吗? 你的类声明Users < ActiveRecord::Base
? 如果是这样,请将它们更改为以下内容。
users.rb => user.rb
User < ActiveRecord::Base
因此,我将此标记为社区维基,因为解决方案很简单。
我正在调用调试器(我曾用以下代码检查current_user
class ApplicationController < ActionController::Base protect_from_forgery debugger filter {|c| Authorization.current_user = c.current_user} end
Rails使会话和请求对象可用于控制器实例。 调试器在self == ApplicationController
的上下文中被调用,它应该是self == #
。
简而言之,请确保您不是在控制器定义中调用它,而是在控制器实例中调用它。