rails update_attribute删除未确认的设计用户的电子邮件地址

时间:2013-12-05 14:06:33

标签: ruby ruby-on-rails-3 devise

这里在我的代码中(其中使用了设计)我使用户模型可以确认(我不知道它是否相关或有帮助)并且我有一些after_create回调。根据我的日志,在update_attributing回调中的实例之前,用户实例有其电子邮件地址,一切正常但在更新之后,它丢失了它的电子邮件地址! 这是我的代码:

after_create :generate_api_key

def generate_api_key
    puts "persisted? #{persisted?}"
    puts "email1: #{email}"
    api_key = ApplicationHelper::KeyGenerator.generate(64)
    update_attribute(:api_key, api_key)
    puts "email2: #{email}"
  end

结果是:

persisted? true
email: foobar@gmail.com
email: 

但如果我禁用此after_create回调,一切正常并保留其电子邮件地址!

是什么原因?

更新:如果我禁用confirmable,则不会有任何问题。因此问题来自确认!

1 个答案:

答案 0 :(得分:0)

我不确定为什么更新后电子邮件地址为空。但我建议你把generate_api_key放在before_create所以

  1. 您可以避免额外的数据库调用。
  2. 您可能希望在更新时强制执行验证,因为您已启用确认。
  3.   

    before_create:generate_api_key

    def generate_api_key
      self.api_key = ApplicationHelper::KeyGenerator.generate(64)
    end