开发者

Rails 3 app with Devise loading existing users

开发者 https://www.devze.com 2023-02-01 11:02 出处:网络
We\'ve built a new app which involves a lengthly registration process. We\'re using Rails 3 and devise for authentication using :confirmable.

We've built a new app which involves a lengthly registration process. We're using Rails 3 and devise for authentication using :confirmable.

No开发者_如何学运维w we've got to import a large set of existing users from an old system. We want this to be done manually to test the process.

So the problem is we don't want to send confirmation emails to these users.

Any suggestions how we can either suppress emails and still manually complete the registration process?

Dom


Looking at the confirmable source code, it seems as if it won't send out any emails if the user is set to confirmed on create.

First off, you need to determine whether you want the newly created user to get an email or not. I'd suggest adding a checkbox to the form, or alternatively cross-referencing the email address against the old users table:

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

Assuming you've done one of the two, you'll have a boolean value of skip_email?. Now you can do:

def create 
  skip_email? = true # See above

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

  if @user.save
    ...
  end
end

skip_confirmation! is a method Devise adds to the User model. You can find the Devise source code here.

0

精彩评论

暂无评论...
验证码 换一张
取 消