In meiner Rails 5 + Postgres app ich eine Abfrage wie folgt machen:Rails 5 Active - überprüfen, ob alle Ergebnisse, bevor mit Methoden
user = User.where("name = ?", name).first.email
Also das gibt mir die E-Mail des ersten Benutzers mit dem Namen.
Aber wenn kein Benutzer mit diesem Namen existiert ich eine Fehlermeldung erhalten:
NoMethodError (undefined method `email' for nil:NilClass)
Wie kann ich überprüfen, ob ich irgendwelche Ergebnisse, bevor die Methode? if-Klauseln
ich denken kann, wenn verschiedene Möglichkeiten, dies mit zu tun:
user = User.where("name = ?", name).first
if user
user_email = user.email
end
Aber dies scheint nicht die eleganteste Art und Weise zu sein und ich bin sicher, dass Rails hat eine bessere Art und Weise.
Es gibt auch 'try' in Rails, wenn Ruby nicht über' & .': 'User.where (Name: Name) .First.versuch (: name) '. Aber 'try' schluckt auch NoMethodErrors, die nicht von' nil' herrühren, also möchten Sie manchmal 'versuchen'. –