El uso de Ruby on Rails, quiero antes de filtrar una acción, pero sólo cuando los usuarios se registran enRuby on Rails: before_filter =>: only_when_user_is_logged_in
¿Cómo es esto posible.?
El uso de Ruby on Rails, quiero antes de filtrar una acción, pero sólo cuando los usuarios se registran enRuby on Rails: before_filter =>: only_when_user_is_logged_in
¿Cómo es esto posible.?
creo que estás preguntando cómo plazo un antes filtro sólo si un usuario está conectado No hay una función de semántica para esto, pero es bastante fácil de inline:.
class SomeController < ApplicationController
before_filter :do_something
def do_something
if logged_in?
# the stuff you want to do
end
end
end
Si está utilizando la autenticación restful, es solo before_filter :login_required
. Si está utilizando su propio marco de autenticación, puede crear un método en application.rb que devuelva verdadero si el usuario está conectado o redirecciona a la página de inicio de sesión.
before_filter :only_when_user_is_logged_in, :only => :the_action
o para múltiples
before_filter :only_when_user_is_logged_in, :only => [:the_action, :another_action]
Por otro lado, también puede proporcionar una opción :except => :this_action
Este es el patrón canónico, según las guías de Rails: http://guides.rubyonrails.org/action_controller_overview.html#filters – clozach
Si realmente no quiere que el before_filter
de ejecución de cualquiera que no sea los usuarios registrados considere usar #skip_before_filter
en su filtro de autenticación. Por ejemplo, si está comprobando si los usuarios han iniciado sesión en su filtro de autenticación, si la autenticación falla, simplemente llame al skip_before_filter :filter_for_logged_in_users_only
.
Aparte de eso, simplemente puede probar si el usuario ha iniciado sesión antes de ejecutar el filtro solo miembro. Por ejemplo:
def filter_for_logged_in_users_only
return true unless current_user && logged_in?
#rest of the logic
end
cosas buenas. Gracias – s84
Antes de filtros toman un bloque opcional que se pasa a la instancia actual controlador por lo que podría hacer algo como esto:
before_filter :do_stuff, lambda { |controller| controller.logged_in? }
class LoginsController < ApplicationController
skip_before_filter :require_login, :only => [:new, :create]
end
Vaya,
, dentro del controlador. Puede ser que estés usando tu propio editor inventado nuevo. –
Rubyist
¿Por qué hay todavía una recompensa en esta pregunta. ¡Ah, esto es tan novato para mí ahora! – s84