Ruby on rails rails 4,activeAdmin,设计不为管理员用户保存重置密码令牌

Ruby on rails rails 4,activeAdmin,设计不为管理员用户保存重置密码令牌,ruby-on-rails,ruby,ruby-on-rails-4,devise,activeadmin,Ruby On Rails,Ruby,Ruby On Rails 4,Devise,Activeadmin,我正在通过提供电子邮件创建其他管理员成员,并有一个块向新添加的电子邮件发送密码重置: class AdminUser < ActiveRecord::Base after_create { |admin| admin.send_reset_password_instructions } # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable

我正在通过提供电子邮件创建其他管理员成员,并有一个块向新添加的电子邮件发送密码重置:

class AdminUser < ActiveRecord::Base
  after_create { |admin| admin.send_reset_password_instructions }

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, 
         :recoverable, :rememberable, :trackable, :validatable


  def password_required?
    new_record? ? false : super
  end
end
正在生成令牌,但是当我在
self.save(validate:false)
行之前选中
self
时,
self.reset\u password\u令牌
没有附加任何内容,它是零

最后让我更复杂的是,当我现在手动运行行
self.reset\u password\u token=enc
self.reset\u password\u token
时,实际上现在保存了该token,在保存它并检查数据库后,新保存的AdminUser的
reset\u password\u token
仍然为零

这到底是怎么回事

然而,注意:表明情况不应如此,如下所示:


你好你是怎么做到的?你找到解决办法了吗?我现在遇到了同样的问题!如果我找到该做什么,我会发布一个答案。@AlfredoGallegos我后来决定用另一个Ruby宝石来处理重置密码。创业板是:
def set_reset_password_token
  raw, enc = Devise.token_generator.generate(self.class, :reset_password_token)

  self.reset_password_token   = enc
  self.reset_password_sent_at = Time.now.utc
  self.save(validate: false)
  raw
end
test 'should not clear reset password token for new user' do
  user = new_user
  assert_nil user.reset_password_token

  user.send_reset_password_instructions
  assert_present user.reset_password_token

  user.save
  assert_present user.reset_password_token
end