2014-12-15 1 views
0

나는 devise를 인증에 사용하고 있습니다. 그렇지처럼Devise SessionsController # 돌아 오는 길에 사용자를 생성합니다.

class SessionsController < Devise::SessionsController 
    before_action :set_user, only: :create 

    def create 
    if @user && [email protected]? 
     return redirect_to(new_activation_token_path) # prevent the user from logging in 
    else 
     super # default behavior 
    end 
    end 

private 
    def set_user 
    @user = (params[:user].blank?) ? 
     User.new : 
     User.find_by(email: params[:user][:email]) 
    end 
end 

그것은 나의 이해가 return redirect_to(some_path) 액션 일찍 반환 할 수 것입니다, 그러나 그것은 보인다 그들은 자신의 계정을 활성화하지 않은 때 로그인되는 사용자를 방지하기 위해 Devise::SessionsController#create 조치를 오버라이드 (override) 할 - 사용자가 아직 로그인하고 있습니다. 여기서 무엇을 놓치고 있습니까? 어떤 조건에 따라 사용자가 로그인하지 못하게하려면 어떻게해야합니까? , 오버라이드 (override) #active_for_authentication? (here에서 촬영)를 User 모델에서

+0

체크 아웃이 만족할만한 선택이 될 것입니다 유증에서 제공하는 확인 모듈을? [http://www.rubydoc.info/github/plataformatec/devise/master/Devise/Models/Confirmable](http://www.rubydoc.info/github/plataformatec/devise/master/Devise/Models/Confirmable) – kurenn

답변

0

# Devise model 
class User < ActiveRecord::Base 
    def active_for_authentication? 
    activated? && super 
    end 
end 
관련 문제