我使用Rails Composer生成了一个使用 devise、rolify 和 cancan gem 的 Rails 应用程序。
我注意到我可以使用 current_user 方法。
当我在 Textmate 中使用 cmd-shif-F 搜索我的项目时,我找不到 current_user 的定义位置。我已经完成了一些你自己的身份验证逻辑示例,在应用程序控制器中设置 current_user 似乎很常见。我的应用程序中没有这样的代码。
不过,我可以验证 current_user 是否有效。
这个 SO Q/A here指向一些代码,但我不明白。看起来 current_user 是一个生成的方法,它是一些元编程魔法的结果。不过,如果它没有在应用程序控制器的前置过滤器中被引用,它怎么能工作呢?
相当简单的 application_controller.rb 看起来像这样:
class ApplicationController < ActionController::Base
protect_from_forgery
rescue_from CanCan::AccessDenied do |exception|
redirect_to root_path, :alert => exception.message
end
end