Unschön:
if user.role == "admin" or user.role == "guest"
Lösung:
class User def role ActiveSupport::StringInquirer.new(super) end end
if user.role.admin? or user.role.guest?
Der ActiveSupport::StringInquirer ergänzt einen String um beliebige Testmethoden, welche die Gleichheit von String und Methodenname (ohne Fragezeichen) überprüfen. Ein prominenter Anwendungsfalls ist die Environment-Variable Rails.env von Rails, die sich auch in der Form Rails.env.production?
prüfen lässt.
Code obfuscation, nur um 8 Zeichen einzusparen?
Ein Decorator ist ein recht weit verbreitetes Pattern und sollte die wenigsten Entwickler verwirren. Speicherplatz ist recht günstig. Es geht eher darum einen einfachen Datentyp zu verstecken und mit einer sinnvollen API zu versehen, so dass man hier bei Bedarf ein richtiges Objekt einsetzen kann. Zudem liest es sich besser. Aber das ist natürlich subjektiv.