Ruby, es sei denn, && Anweisung
Habe ich Folgendes in meinem application_controller.rb
def layout
unless request.subdomain.empty? && current_user.nil?
self.class.layout 'admin'
end
end
Es scheint der code oben funktioniert es nicht. Aber wenn ich den folgenden Code, es funktioniert.
def layout
unless request.subdomain.empty?
unless current_user.nil?
self.class.layout 'admin'
end
end
end
Ich möchte den code vereinfachen durch das entfernen einer wenn-Anweisung. Wie könnte ich das tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
unless something
entsprichtif !something
. In deinem Fall wäreAllerdings, du willst
Mit Hilfe der booleschen algebra (De Morgan Regel), können Sie umschreiben zu
Mit
unless
Wenn Sie möchten, setzen Sie die layout zu
'admin'
wenn die subdomain nicht leer und der aktuelle Benutzer ist nicht nil:Ändern Sie Ihre Logik verwenden
if
Aussagen und die positiven Prädikate, Sie wird die Logik in deinem code viel einfacher zu verstehen:Beste Praxis ist es, zu vermeiden
unless
außer in den trivialsten Fällen.Verwenden:
Ich nie verwenden
unless
mit allem, was komplexer ist ("enthält" oder/und), es ist einfach zu schwer auf Grund über eine Aussage wie, dass.