2017-02-27 59 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