Rails Devise回滚事务不会给出错误

时间:2017-02-27 10:23:05

标签: ruby-on-rails devise

我有一个使用Devise作为身份验证的应用程序。我不希望用户能够更改电子邮件地址。我通过将email属性设置为只读用户模型来完成此操作。

class User < ActiveRecord::Base
    attr_readonly :email
end

这很好用:Rails回滚事务。然而,Devise认为更新是成功的并且显示消息成功消息。

"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

1 个答案:

答案 0 :(得分:0)

我不知道我是否得到了你的问题,但从我得到的是解决方案。您可以在记录回滚时使用异常处理

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;

namespace Database.model
{
public class student
{
    public int id { get; set; }
    public string name { get; set; }
    private string age { get; set; }

    public DataTable GETSQLServerData()
    {
        //Connect
        var _connectionobject = new SqlConnection();
        _connectionobject.ConnectionString = @"Provider=SQLOLEDB;Data Source=PHYSICS\SQLEXPRESS;Persist Security Info=true;Initial Catalog=master;Integrated Security=True; provider = SQLOLEDB;";
        _connectionobject.Open();
        //Command
        var _commandObject = new SqlCommand();
        _commandObject.CommandText = "select * from dbo.tblStudent";
        //Execute 
        _commandObject.ExecuteReader();
        //Data
        var _dataReader = _commandObject.ExecuteReader();

        DataTable obj2 = new DataTable();
        obj2.Load(_dataReader);
        _connectionobject.Close();
        return obj2;


    }

}
}