Rails 3应用程序与Devise加载现有用户

时间:2010-12-29 20:34:42

标签: ruby-on-rails-3 devise

我们已经构建了一个新的应用程序,涉及一个长期的注册过程。我们正在使用Rails 3并使用以下方式设计身份验证:确认。

现在我们必须从旧系统导入大量现有用户。我们希望手动完成此操作以测试该过程。

所以问题是我们不想向这些用户发送确认电子邮件。

有关我们如何抑制电子邮件并仍然手动完成注册过程的任何建议?

的Dom

1 个答案:

答案 0 :(得分:1)

查看confirmable源代码,如果用户设置为在创建时确认,则好像不会发送任何电子邮件。

首先,您需要确定是否希望新创建的用户收到电子邮件。我建议在表单中添加一个复选框,或者将旧邮件地址与旧用户表交叉引用:

def create 
  # Form style
  skip_email? = params[:user].delete(:skip_email)

  # Old users style
  skip_email? = !!OldUser.find_by_email(params[:user][:email])

  @user = User.new(params[:user])
  ...
end

假设你已经完成了两个中的一个,你的布尔值为skip_email?。现在你可以做到:

def create 
  skip_email? = true # See above

  @user = User.new(params[:user])
  @user.skip_confirmation!

  if @user.save
    ...
  end
end

skip_confirmation!是Devise添加到User模型的方法。您可以找到Devise源代码here