Eleganterer Stringvergleich mit StringInquirer

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.

2 Kommentare

  1. 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.

Kommentare sind geschlossen.