更改用户角色时如何避免数据库异常?

时间:2013-04-03 13:17:37

标签: ruby-on-rails database activerecord user-roles

我有这样的情况:我有用户表,我按类型划分用户:管理员,经理,客户。

只能使用管理器模型(管理器has_many管理器)创建管理器,并且它是在嵌套表单上创建的。

如果有人试图使用已注册的客户电子邮件创建经理,我想将客户升级为经理

现状:

当我尝试使用客户的电子邮件创建Manager时,它显示数据库错误。我可以进行一些验证来更改客户类型 - >到 - >经理,但它仍然想保存经理记录,显然失败并给我下一个错误。

   ActiveRecord::RecordNotUnique:
   PG::Error: ERROR:  duplicate key value violates unique constraint "index_users_on_email"

我如何处理 RIGHT

P.S。这是我的模型代码:

 class Organizer
 accepts_nested_attributes_for :managers
 has_many :managers
 ___________________

 class Manager < User
 belongs_to :organizer

 ___________________

 class Customer < User

1 个答案:

答案 0 :(得分:0)

您应首先检查您的Users表中是否存在具有指定电子邮件ID的记录。

  • 如果是,请将该记录中的角色col更新为Manager,
  • 否则插入新记录。