2014-02-02 4 views
2

В настоящее время у меня есть ActionMailer, отправляющий электронное письмо, когда пользователь регистрируется, и я генерирую случайное: sign_in_token с пользователем.Подтверждение электронной почты Подтверждение с помощью ActionMailer

Как пользователь может щелкнуть ссылку, отправленную на его электронную почту, и обновить пользователей: registration_complete boolean значение TRUE?

В настоящее время я могу отправить ссылку и создать случайный токен, но я не знаю, как обновить логическое значение по электронной почте.

МОДЕЛИ

class User < ActiveRecord::Base 
    attr_accessible :name, :email, :password, :password_confirmation, :sign_in_token, 
       :registration_complete 

    ###This generates my sign_in_token 
    def generate_sign_in_token 
    self.sign_in_token = Digest::SHA1.hexdigest([Time.now, rand].join) 
    end 

end 

CONTROLLER

def create 
    @user = RegularUser.new(params[:regular_user]) 
    if @user.save  

    ###Sends the User an email with sign_in_token 
    UserMailer.registration_confirmation(@user, login_url+"/#{@user.sign_in_token}").deliver 

    flash[:success] = "Please Check Your Email to Verify your Registration!" 
    redirect_to (verifyemail_path) 
    else 
    render 'new' 
    end 
end 

user_mailer

def registration_confirmation(user, login_url) 
    @login_url = login_url 
    @user = user 
    mail(:to => "#{user.name} <#{user.email}>", :subject => "Welcome to APP") 
end 

МНЕНИЯ

###Redirects User to Login Page, But how do i connect it to my activate method? 
<%= link_to "Complete Registration", @login_url %> 

МАРШРУТЫ

match '/login/:sign_in_token', :to => 'sessions#new' 

ответ

2

при нажатии на ссылку, он берет их в контроллер с действием set_complete с использованием запроса GET, который задает логическое значение.

Что-то вроде:

def set_complete 
user = User.find(params[:user]) 
user.update_attribute(registration_complete => true) 
redirect_to login_path # or whatever your login url is... 

end 

Для действия контроллера и что-то вроде этого для ссылки:

<a href="example.com/registrations/set_complete?user=1" /> 

Вот пример того, что может пойти в файле маршрутов:

get "https://stackoverflow.com/users/set_complete", :to => "users#set_complete" 

Вам, вероятно, нужно будет установить идентификатор пользователя на все, что вы хотите, используя erb, и сделайте несколько других приложений fic, но это общая идея.

Надеюсь, это поможет!

+1

Если бы это ответили на ваш вопрос, считаете ли вы его принятым в качестве ответа? –

+0

и как будут выглядеть маршруты? –

+1

Обновленный ответ выше с помощью маршрутов –

Смежные вопросы