Pracuję nad aplikacją ruby na szynach. W przypadku kontrolera sesji chcę użyć skrzynki do sprawdzenia, czy konto użytkownika jest zablokowane lub zbanowane. Próbuję użyć obiektu klasy jako argumentu i używam go do sprawdzania atrybutów.Ruby on Rails Case/Switch. Jak dopasować do obiektu?
Na przykład
user = Profile.find(1)
case user
when user.ban
redirect_to()
when user.lock
redirect_to()
else
redirect_to()
end
Jedynym problemem jest to, że nie działa.
Co działa to:
case user.ban
when true
redirect_to()
else
redirect_to()
end
Wszelkie porady, w jaki sposób można przejść o sprawdzenie, czy obiekt użytkownika jest zakazane lub zablokowane za pomocą przełącznika?
Dziękuję
Dziękuję za wszystkie odpowiedzi. Uważam, że odpowiedź Zepplocka jest najbardziej użyteczna dla mojej aplikacji. Jedyna różnica polega na tym, że użyłem symboli w metodzie i przypadku. Oto metoda pisałem: stan def jeśli self.ban zwrot: zakaz koniec jeśli self.lock zwrot: zablokowanie koniec końcowy – Brian
@Brian: Wystarczy Rubify trochę - jeśli funkcja zwraca wartość logiczną, dobrze jest nazwać je znakiem zapytania. Ponadto, nawet jeśli post-modyfikatory mogą być nadużywane i szkodzą czytelności, w tym przypadku myślę, że pracują nad poprawą: 'def status; return: zbanowany, jeśli zbanowany ?; return: zablokowany, jeśli jest zablokowany? end' – Amadan