Ich arbeite an einer Ruby on Rails-Anwendung. Für einen Sitzungscontroller möchte ich einen Fall verwenden, um zu überprüfen, ob das Konto eines Benutzers gesperrt oder gesperrt ist. Ich versuche, das Objekt einer Klasse als den Fall zu verwenden, und zu verwenden, wenn Attribute überprüft werden.Ruby on Rails Gehäuse/Switch. Wie passt man gegen ein Objekt?
Zum Beispiel
user = Profile.find(1)
case user
when user.ban
redirect_to()
when user.lock
redirect_to()
else
redirect_to()
end
Das einzige Problem ist, dass nicht funktioniert.
Was bedeutet Arbeit ist dies:
case user.ban
when true
redirect_to()
else
redirect_to()
end
Irgendwelche Tipps, wie ich über die Überprüfung gehen kann, wenn ein Benutzerobjekt verboten oder gesperrt ist ein Schalter?
Danke
Vielen Dank für die Antworten. Ich fand Zepplocks Antwort am nützlichsten für meine Anwendung. Der einzige Unterschied ist, dass ich Symbole in der Methode und im Fall verwendet habe. Hier ist die Methode, die ich schrieb: def Status wenn self.ban Rückkehr: Verbot Ende wenn self.lock Rückkehr: sperren Ende Ende – Brian
@ Brian: Nur ein bisschen Rubify - wenn eine Funktion einen Booleschen Wert zurück, Es ist eine gute Form, es mit einem Fragezeichen zu benennen. Auch wenn Post-Modifikatoren missbraucht werden und die Lesbarkeit beeinträchtigen können, denke ich, dass sie in diesem Fall daran arbeiten, sie zu verbessern: 'def status; Rückkehr: verboten wenn verboten ?; return: gesperrt wenn gesperrt? ende – Amadan