1
我有一個Padrino應用此Ruby代碼:如何將一個Ruby`instance_eval`調用提取到方法中?
module Filters
def self.authorize_admin
proc { halt(401) unless current_user.admin? }
end
end
App.controllers :secrets do
before :show, &Filters.authorize_admin
# ...
end
當secrets
控制器接收到show
路線上的請求時,它會運行authorize_admin
濾波器。
如果我想這個規則適用於所有的路由,而不是,我可能會這樣寫:
before { instance_eval &Filters.authorize_admin }
我想Filters
提取這一個方法來代替,這樣我可以這樣寫:
before { Filters.only_administrators }
什麼是正確的方法來做到這一點?
我認爲,如果你刪除了'PROC {}'那麼你可以使用'instance_eval的&filter_method'。 –
@maxpleaner我無法刪除'proc',因爲在其他控制器中,我仍然想使用'before ...,&...'樣式。我想我可以重構那些其他的控制器,但? –