具有Declarative_Authorization的单元格

时间:2011-06-28 15:47:01

标签: ruby-on-rails-3 declarative-authorization rails-cells

使用gems单元格和declarative_authorization(以及Devise),我试图弄清楚如何包含allowed_to?进入细胞模板。到目前为止,我已将此添加到我的单元格Cell(Devise一个适用于它的助手):

class SidebarCell < Cell::Rails
    include Devise::Controllers::Helpers
    helper_method :current_user
    include Authorization::AuthorizationHelper
    helper_method :permitted_to?



  def display(args)
    @object = args[:object]
    @notice = args[:notice]
    @alert = args[:alert]
    render
  end

end

但是,由于declarative_auth帮助程序模块使用以下代码,这是一次轰炸:

def permitted_to? (privilege, object_or_sym = nil, options = {}, &block)
      controller.permitted_to?(privilege, object_or_sym, options, &block)
    end

显然这给了

undefined local variable or method `controller' for ...

更新:

经过一番思考,我不确定这会对Cell有效。 Declarative_auth需要控制器基于它的规则,但Cells与该控制器无关。在我看来,这两者是不兼容的,除非我将控制器的引用传递给单元格?开始认为Cell不是最佳选择。

1 个答案:

答案 0 :(得分:1)

如果添加

,这将有效
helper_method :controller

只是代表:

def controller
  parent_controller
end

很抱歉给您带来不便,但Rails中的整个帮助程序架构很糟糕:http://nicksda.apotomo.de/2011/10/rails-misapprehensions-helpers-are-shit/