2013-03-18 160 views
0

控制器类型我创建了一个模块,基本上是我想要做的是,检测模块红宝石

在此模块中

,有可能会像一个的before_filter功能。该函数将执行逻辑并确定它应执行的操作。例如

class JobsController < ApplicationController 
    include Mymodule 
    authorize_resources 

    def create 
    end 

    def update 
    end 

end 

module Mymodule 
    def authorize_resources 
    current_controller = params[:controller] 
    if current_controller == 'jobs' 
     //some logic 
    end 
    end 
end 

所以我怎么居然能自动检测控制器名称基于在我的功能所在,如就业,用户和等,这是类似的东西惨惨,但我想使自己的。

此外,如果它失败,我该如何引发异常或redirect_to路径,是否需要扩展一些rails类?

def authorize_resources 
    if current_controller.class == 'jobs' 
    //logic 
    end 
end 

回答

1

更改if到:

if(current_controller == JobsController) 

如果params[:controller]是类本身,

if(current_controller.class == JobsController) 

如果变量是JobsController一个实例。

+0

但是,我想使它动态检测?当authorize_resources在特定控制器中调用时,它会检测current_controller是什么,并执行逻辑。 er..Mayb我更新了,看看是否你的意思..cz我不太了解你的答案。 – Nich 2013-03-18 03:33:02

+0

@Nich:我明白了!给我几分钟。 – Linuxios 2013-03-18 03:33:58

+0

当然,我更新了问题,因为你提到 – Nich 2013-03-18 04:05:59