Rails:自定义Devise Confirmable模块?

时间:2010-12-14 16:59:14

标签: ruby-on-rails devise

我的Rails应用程序设置为Devise,但它仍处于开发阶段。我还有一个创建默认管理员用户的Thor任务。

问题是,在确认帐户之前,Devise不会让该管理员用户登录该站点。有没有办法可以禁用可确认模块来创建特定用户,例如Admin?

我的托尔任务:

class Setup < Thor
  desc "create_admin [EMAIL] [PASSWORD]", "Creates the administrative user."
  def create_admin(email = "admin@bogus.com", password = "testpassword123")
    require File.expand_path('config/environment.rb') # load Rails environment
    admin = User.create(:email => email, :password => password, :password_confirmation => password)
    admin.assign_role :admin
    puts "Admin user (#{ email }) created."
  end
end

3 个答案:

答案 0 :(得分:6)

创建用户后,您可以致电设备确认!方法而不是直接更新数据库。例如:

admin = User.create(:email => email, :password => password, :password_confirmation => password)
admin.assign_role :admin
admin.confirm!

答案 1 :(得分:2)

这应该有效

admin = User.create(:email => email, :password => password, :password_confirmation => password)

因此,您的confirmed_at已设置,这是检查用户确认时的字段设计。

修改

请原谅我,如果这看起来像是一个黑客,但这似乎对我有用。执行上述行后,

admin.update_attributes(:confirmed_at => Time.now)

答案 2 :(得分:-1)

只需在用户或管理模式

中注释:confirmable
devise :database_authenticatable, :recoverable, :rememberable, :trackable, #:confirmable...

在config / inicializers / devise.rb中 您可以在此设置用户必须确认其帐户的时间