Tengo un método que hace algo como esto:
before_filter :authenticate_rights, :only => [:show]
def authenticate_rights
project = Project.find(params[:id])
redirect_to signin_path unless project.hidden
end
También quiero usar este método en algunos otros controladores, así que copié el método en un ayudante que se incluye en application_controller.
el problema es que, en algunos controladores, la identificación del proyecto no es el :id
símbolo sino fe :project_id
(y también :id
está presente (para otro modelo)
Como resolverías este problema? ¿Existe una opción para agregar un parámetro a la acción before_filter (para pasar el parámetro correcto)?
,:only => [:show]
símbolo? Recibo un error al intentarlobefore_filter { |c| c.authenticate_rights correct_id_here }, :only => [:show]
before_filter(:only => [:show]) { <block_code_here> }
. Más ejemplos aquí: apidock.com/rails/ActionController/Filters/ClassMethods/…before_filter
método sea privado, entonces quizás vuelva a factorizar (por ejemplo, muévalo a un controlador principal, ApplicationController, etc.), deberá usarloc.send(:filter_name, ...)
ya que el filtro no se ejecutará en el contexto del controlador. guides.rubyonrails.org/…