Ruby on Rails Devise Confirmation Token为零

时间:2016-02-20 19:27:03

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

我有一个用户模型(由 var _origens_list = [ { id: 1, tipo: "Manual1", nome: "Manual" }, { id: 2, tipo: "Automática", nome: "Metodo 1" }, { id: 3, tipo: "Automática", nome: "Metodo 2" }, { id: 4, tipo: "Automática", nome: "Metodo 3" } ]; 创建)并且设置为使用确认(在模型和迁移中)。

创建用户时,未设置确认令牌(并且未发送确认电子邮件)。

这是$ rails g devise User

app/models/user.rb

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

那是因为你重写confirmation_required?总是返回false。

查看this

before_create :generate_confirmation_token, if: :confirmation_required?

只有在该方法返回true时才会生成令牌。

confirmation_required?的默认行为是,如果记录尚未确认,则返回true。

def confirmation_required?
  !confirmed?
end

答案 1 :(得分:2)

为了补充@nbermudezs的答案,这个confirmation_required?方法被添加到设计中以防你想要绕过某些用户的确认(例如有特殊促销代码的用户,或其他什么)

如果你不想有任何例外,我建议你只需删除那些代码行或注释它们,这样你就会回到devise_confirmable的默认行为,这是你想要的那个(和由@nbermudezs提供)

# def confirmation_required?
#   false
# end