我正在使用 Rails 4.1 进行开发。
我有以下模块(在app/policies/model_filters/helpers.rb
中:
module ModelFilters
module Helpers
def allow(record, action)
end
end
end
我将其添加到我的app\controllers\application_controller.rb
:
class ApplicationController < ActionController::Base
include ModelFilters::Helpers
在我想要使用它们的课程中(app\bar\foo.rb
):
class Foo
include ModelFilters::Helpers
正确包含了这些方法,但上述模块中似乎没有提供设计帮助程序;当我开始我的规格测试时,我得到:
undefined local variable or method 'current_user' for #<Foo...
# ./app/policies/model_filters/helpers.rb:5:in `allow'
# ./app/bar/foo:13:in `recent'
您是否知道如何在模块中或通常在控制器外部看到Devise助手?
谢谢!
答案 0 :(得分:3)
设计助手只能在控制器中使用,因为它们只在被调用的动作的上下文中有意义。
如果您考虑一下Foo
课程,current_user
真正意味着什么?在控制器中,current_user
是Devise可以从session
中存储的数据中找到的用户对象。
如果您需要在其他类中使用用户对象,最好将用户传递给您正在调用的类或方法。