Учитывая, что это хорошо документировано, как использовать before_filter для единой классификации пользователей, мне не удается получить защиту уровня действия для нескольких типов пользователей. Поясню:Как получить защиту уровня действия с использованием Authlogic и STI?
у меня есть что-то вроде этого ...
class ApplicationController < ActionController::Base
class << self
attr_accessor :standard_actions
end
@standard_actions = [:index, :show, :new, :edit, :create, :update, :destroy]
def require_guardian
unless current_user and current_user.is_a?(Guardian)
store_location
redirect_to home_url
return false
end
end
def require_admin
unless current_user and current_user.is_a?(Administrator)
store_location
redirect_to register_url
return false
end
end
end
И в GuardiansController Я хочу, чтобы только стандартные действия для администратора, но все остальные действия должны требовать Guardian. Поэтому я пробовал это ...
class GuardiansController < ApplicationController
before_filter :require_admin, :only => ApplicationController::standard_actions
before_filter :require_guardian, :except => ApplicationController::standard_actions
...
end
Который в конечном итоге выполняет рекурсивное перенаправление. Должен быть лучший способ?