2014-04-21 3 views
0

이상한 문제가 있습니다. find_by_email이 내 프로젝트에서 작동하지 않는 것 같습니다. 여기 컨트롤러에서 예외가 발생합니다. 내가 코드와 아무 잘못을 중지 할 수 없습니다 레일 4.0.3Ruby on Rails 정의되지 않은 메소드 find_by_email

def create 
    user = User.find_by_email(params[:email]) 
    if user && user.authenticate(params[:password]) 
     session[:user_id] = user.id 
     redirect_to root_url, notice: "Welcome back!" 
    else 
     flash.now.alert = "Email or password is invalid" 
     render "new" 
    end 
end 

를 사용하지만, 여전히 액션 컨트롤러 점점 오전 : 잡은 예외 :

NoMethodError in SessionsController#create 
app/controllers/sessions_controller.rb:6:in `create' 
undefined method `find_by_email' for #<Class:0x007fbdd62179b0> 

를 내가 해결 할 수있는 또 다른 방법이 있다면 내가 궁금하네요 이? 나는 레일 콘솔에서 수동으로이 방법을 사용해 보았지만 동일한 문제가 발생했습니다.

+0

어떤 레일 버전을 사용하고 있습니까? – Santhosh

+2

'User' 테이블에 이메일 필드가 있습니까? –

+0

사용자 테이블에'email' 필드가 있는지 확인하십시오. – Pavan

답변

1

이 때문에 사용자 테이블 email 열 누락된다.

아직 마이 그 레이션을 실행하지 않은 경우 수행하십시오.

0

사용자 정의 절하

User.find_by email: params[:email] 

조만간 당신이 그것을 변경해야 할 방법

사용

에서 찾을 수 있습니다 사용자 테이블

레일 4.1.0 이메일 필드를 추가합니다.

많은 기준에 의해 제안

http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find_by

+0

이 기능은 여전히 ​​사용 중단 메시지이지만 기능적으로는 여전히 문제가 아닙니다. –

+0

사용자 테이블에 이메일 입력란 추가 –

관련 문제