Ich habe eine Anwendung, die Devise als Authentifizierung verwendet. Ich möchte nicht, dass der Benutzer seine E-Mail-Adresse ändern kann. Ich habe dies getan, indem ich das E-Mail-Attribut so eingestellt habe, dass es nur im Benutzermodell gelesen wird.Rails Devise Rollback-Transaktion gibt keinen Fehler
class User < ActiveRecord::Base
attr_readonly :email
end
Das funktioniert gut: Rails Rollback der Transaktion. Devise denkt jedoch, dass das Update erfolgreich war und zeigt eine Nachricht erfolgreich an.
"Your account has been updated successfully."
Ich habe mehrere Sachen ausprobiert einschließlich meiner onw Methode erstellen, die eine Flash-Mitteilung zurückkehren würde, aber es sagt immer wieder, dass das Konto erfolgreich aktualisiert wurde.
Gibt es eine Möglichkeit, einen Fehler zu melden, wenn der Datensatz nicht erfolgreich gespeichert wurde?
Bearbeiten nach Ashvins anwser. Dies ist, was ich in meinem Modell haben:
def email=(address)
begin
if new_record?
write_attribute(:email, address)
end
rescue Exception => error
flash[:alert] = error.message
end
end
ich den Code versucht haben, aber es ist immer noch sagt, dass es erfolgreich – Samuel
ist zu aktualisieren, welche Aktion durchführen, können Sie bitte Code hier einfügen, so kann ich genaue Idee . – ashvin
Ich habe den benutzerdefinierten Code hinzugefügt, den ich verwende. Ich denke, dass es besser sein könnte, den Controller zu überprüfen, wenn sich die E-Mail-Adressen von den Params unterscheiden [: email]. – Samuel