Je travaille sur une application de rubis sur rails. Pour un contrôleur de session, je souhaite utiliser un cas pour vérifier si le compte d'un utilisateur est verrouillé ou interdit. J'essaie d'utiliser l'objet d'une classe comme cas, et d'utiliser quand vérifier les attributs.Boîtier/Interrupteur Ruby on Rails. Comment faire correspondre à l'objet?
Par exemple,
user = Profile.find(1)
case user
when user.ban
redirect_to()
when user.lock
redirect_to()
else
redirect_to()
end
Le seul problème est que cela ne fonctionne pas.
Qu'est-ce que le travail est la suivante:
case user.ban
when true
redirect_to()
else
redirect_to()
end
Tous les conseils sur la façon dont je peux vérifier si un au sujet de l'objet utilisateur est interdit ou verrouillé à l'aide d'un interrupteur?
Merci
Merci pour toutes les réponses. J'ai trouvé la réponse de Zepplock la plus utile pour mon application. La seule différence est que j'ai utilisé des symboles dans la méthode et le cas. Voici la méthode que j'ai écrit: état def si self.ban retour: interdiction fin si self.lock retour: verrouiller fin fin – Brian
@ Brian: Juste pour Rubify un peu - si une fonction retourne un booléen, c'est une bonne forme de le nommer avec un point d'interrogation. De même, même si les post-modificateurs peuvent être abusés et nuire à la lisibilité, dans ce cas je pense qu'ils travaillent pour l'améliorer: 'statut de défection; retour: interdit si interdit ?; retour: verrouillé si verrouillé? end' – Amadan