2013-10-24 61 views
0

我在redmine上創建了一個修改RepositoryControler核心的插件。如何在Redmine的核心修改中使用before_filter

我已經在這個控制器中添加了一個新功能的補丁,我可以根據角色權限調用這個功能。

但要正確設置權限,我需要爲我的新功能配置授權(:authorizebefore_filter

問題是因爲在我的補丁中添加before_filter不起作用,我不知道什麼是最好的方式來做到這一點。下面我的代碼:

client.rb

module RepositoriesPatch 
    require_dependency 'repositories_controller' 

    def self.included(base) 
     base.send(:include, InstanceMethods) 
    end 
end 

module InstanceMethods 

    require_dependency 'repositories_controller' 

    #I THINK THE BEFORE_FILTER SHOULD BE PLACED HERE, BUT IT DIDN'T WORKED. 
    # before_filter :authorize, :only => :exec_client (????????) 

    def exec_client 
    begin 
    .... 
    end 

end 

Rails.configuration.to_prepare do 
    RepositoriesController.send(:include, RepositoriesPatch) 
end 

init.rb

permission :repositories, :repositories => :exec_client 

    project_module :repository do 
    permission :exec, :repository => :exec_client 
    end 

    Rails.configuration.to_prepare do 
    RepositoriesController.send(:include, RepositoriesPatch) 
    end 

    settings :default => {'empty' => true}, :partial => 'settings/gerar_versao_configuration' 
end 

回答

2

before_filter必須在類中進行評估如下:

def self.included(base) 
    base.send(:include, InstanceMethods) 
    base.class_eval do 
     unloadable 
     before_filter :authorize, :only => :exec_client 
    end 
end 
+0

完美而平穩地工作。謝謝。 – kamusett

0
拋開Rails的

爲4引入了「before_action」,顯然隨着時間的推移將取代「before_filter」

Pierre

+1

現在Redmine基於第三Rails! – gotva