Tim*_*ord 28 ruby-on-rails devise ruby-on-rails-3
我正在使用Devise来允许用户注册,以及使用我自己的用户admin来手动创建用户.当我在管理员中创建用户时,Devise会立即向新用户发送确认.我相信这是因为设计和我的管理员都使用相同的模型.在管理员准备发送此电子邮件之前,如何延迟此电子邮件?
此外,Devise的验证要求管理员为新用户设置密码.我更希望手动创建的用户在回复确认时指定自己的密码.现在手动创建的用户将不知道他们的密码,除非我在补充电子邮件中发送它们.
Jas*_*ant 49
@ user.skip_confirmation!确认用户,因此用户无需使用确认即可登录.
这在设计3.5中适用于我
停止设计以在创建用户时发送确认电子邮件.
@user.skip_confirmation_notification!
Run Code Online (Sandbox Code Playgroud)
稍后发送确认说明
@user.send_confirmation_instructions
Run Code Online (Sandbox Code Playgroud)
Boo*_*age 37
我们在其中一个应用中执行此操作.您可以告诉Devise NOT自动发送如下确认:
@user.skip_confirmation!
Run Code Online (Sandbox Code Playgroud)
然后,你可以做到
Devise::Mailer.confirmation_instructions(@user).deliver
Run Code Online (Sandbox Code Playgroud)
对于Rails 2.x,您可以执行以下操作:
DeviseMailer.deliver_confirmation_instructions(@user)
Run Code Online (Sandbox Code Playgroud)
dom*_*esz 11
解决方案并不像@Ryan Heneise那样简单.如果您这样做@user.skip_confirmation!确认了用户,那么用户可以在不使用确认的情况下登录,因此在这种情况下确认信是无用的.此解决方案不允许用户在没有确认的情况下登录:Rails 3 with Devise for Authentication - 如何手动创建用户?
aml*_*160 10
现在有一种更简单的方法(在v2.2.4中添加)
Devise的可确认模块现在包含完美的skip_confirmation_notification!允许更清洁解决方案的方法:
@user = User.new params[:user]
@user.skip_confirmation_notification!
@user.save
# ... do stuff, then later...
Devise::Mailer.confirmation_instructions(@user).deliver
Run Code Online (Sandbox Code Playgroud)