Estoy trabajando en una aplicación Ruby on Rails. Para un controlador de sesión, quiero usar un caso para verificar si la cuenta de un usuario está bloqueada o prohibida. Intento usar el objeto de una clase como el caso y usar cuándo verificar los atributos.Funda/interruptor Ruby on Rails. ¿Cómo hacer coincidir el objeto?
Por ejemplo,
user = Profile.find(1)
case user
when user.ban
redirect_to()
when user.lock
redirect_to()
else
redirect_to()
end
El único problema es que no funciona.
Lo que funciona es la siguiente:
case user.ban
when true
redirect_to()
else
redirect_to()
end
Cualquier consejo sobre cómo puedo ir sobre cómo comprobar si un objeto de usuario está prohibido o bloqueado con un interruptor?
Gracias
Gracias por todas las respuestas. Encontré la respuesta de Zepplock la más útil para mi aplicación. La única diferencia es que usé símbolos en el método y el caso. Aquí está el método que escribí: estado def si self.ban retorno: prohibición final si self.lock retorno: bloquear final final – Brian
@ Brian: Sólo para Rubify un poco - si una función devuelve un valor lógico, es buena forma nombrarlo con un signo de interrogación. Además, aunque los modificadores posteriores se pueden abusar y perjudicar la legibilidad, en este caso creo que trabajan para mejorarlo: 'def status; retorno: prohibido si está prohibido ?; return: bloqueado si está bloqueado? fin' – Amadan