2017-02-27 62 views
0

我有一個使用Devise作爲身份驗證的應用程序。我不希望用戶能夠在那裏更改電子郵件地址。我已經通過將電子郵件屬性設置爲只在用戶模型中進行了讀取。Rails設計回滾事務不會給出錯誤

class User < ActiveRecord::Base 
    attr_readonly :email 
end 

這工作正常:Rails回滾事務。然而,設計認爲更新是成功的並顯示消息成功消息。

"Your account has been updated successfully." 

我已經試過幾件事情,包括創建我的ONW梅索德會返回一個閃光的通知,但它口口聲聲說該帳戶已成功更新。

有沒有辦法在記錄未成功保存時引發錯誤?

在Ashvin's anwser後編輯。這是我在我的模型:

def email=(address) 
    begin 
    if new_record? 
     write_attribute(:email, address) 
    end 
    rescue Exception => error 
    flash[:alert] = error.message 
    end 
end 

回答

0

我不知道我有您的問題或沒有,但是從我獲得以下的是解決方案。您可以使用異常處理,同時記錄回滾

begin 
    # do some stuff here 
rescue Exception => e 
    flash[:notice] = e.message 
end 
+0

我試過的代碼,但它仍然是說,它成功地更新要執行 – Samuel

+0

什麼動作,可以請你在這裏粘貼代碼,這樣我就可以得到確切的想法。 – ashvin

+0

我已經添加了我正在使用的代碼自定義代碼。我認爲,如果電子郵件地址與params [:email]不同,那麼在控制器中進行檢查可能會更好。 – Samuel