我系统中的用户需要拥有唯一的电子邮件。如果我尝试使用现有电子邮件创建用户,则控制器会抛出错误并将回滚所有更改。
如果尝试进行欺骗性电子邮件尝试,我想更新模型记录。但回滚可防止任何更改发生,即使它在不同的记录中也是如此。我尝试了update_attribute
,update_column
和save(validate: false)
,但都没有。
如何绕过回滚并对(单独)模型进行一些编辑?
答案 0 :(得分:2)
在我的情况下,after_rollback
可以解决问题。
在after_rollback
回调期间,我会检查是否有电子邮件用户。如果是这样,我认为回滚是由于欺骗电子邮件验证失败,然后更新相应的记录。
答案 1 :(得分:0)
如何使用on :: create选项进行电子邮件验证?使用此选项,验证仅在create中执行,并在update中跳过。
validates :email, uniqueness: true, on: :create