2011-10-20 2 views
0

여기에서 프로젝트 템플릿에 제공된 사용자 개체 외에 person이라는 개체를 만드는 데 문제가 있습니다. https : //github.com/RailsApps/rails3-mongoid-devise/tree/master/scriptMongodb와 함께 Devise가 authenticate_person을 인식하지 못합니까?

devise-mongoid 콤보는 내가 만든 사람 개체를 정말로 좋아하지 않습니다.

  • <퍼센트 = LINK_TO '로그 아웃', destroy_person_session_path : : 나는 사람 아웃하려고 다음 줄을 사용하는 경우 방법 => : 나에게 다음과 같은 오류를 제공합니다 %>

  • 유증을 삭제 :

    Mongoid::Errors::DocumentNotFound in PeopleController#show

    Document not found for class Person with id(s) sign_out.

    Rails.root: /home/jyj/rubys/rails3-mongoid-devise

    그래서 나는 어떤 사람의 아이디와 sign_out을 혼동스럽게 생각합니다.

    프로젝트 폴더에있는 모든 사용자 인스턴스를 덮어 쓰고 모든 사람 개체를 모방했습니다. 또한 직접/devise 폴더에있는보기를 사용하는 대신 내 자신의 로그인을 만들고 페이지를 등록했습니다. 그러나 나는 처음에 그 사람의 사물을 서명하는 데 많은 어려움을 겪었습니다. 나는 자바 스크립트 태그를 인식하는 시스템의 순서를하기 전에 다른 메타 태그를 주석했다

    <%#= csrf_meta_tag %> 
        <%= javascript_include_tag :defaults %> 
    

    주의 사항 : 나중에 나는 내 application.html.erb 파일이 자바 스크립트 태그를 포함 할 필요가 있다는 것을 발견 나는 정말로 이해하지 못한다. 또한 나는 사용자와 사람 사이의 여기의 차이는 사실에 의한 것을 나는 (아마도) 파악

    # config.sign_out_via = Rails.env.test? ? :get : :delete 
    config.sign_out_via = :delete 
    

    , 즉, 설정/초기화하기/devise.rb 파일에 줄을 변경했다 그 테스트 사용자가 factory_girl에서는 초기화되었지만 사람에서는 초기화되지 않았습니다. 그래서 Person은 User와 똑같이 보였습니다. 그러나 그것이 작동하지 않는 것을보고 나는 위의 첫 번째 줄을 주석 처리하고 단순히 sign_out 메서드를 다음과 같이 설정합니다. delete.

    하지만 이제 내 문제는 시스템이 authenticate_person 행을 인식하지 못하게되었습니다! 내 peoplecontroller.rb 파일에서 :

    class PeopleController < ApplicationController 
        before_filter :authenticate_person! 
    
        def show 
        @person = Person.find(params[:id]) 
    
        end 
    
    end 
    

    도움을 주시면 대단히 감사하겠습니다! 추가 코드는 요청시 제공됩니다. 삭제 : : 여기, 자바 스크립트 태그에 넣어 메타 태그를 삭제하고,이기 위하여 sign_out 방법을 강요 한 후 오류 메시지입니다

    NoMethodError in PeopleController#show

    undefined method `authenticate_person!' for

    Rails.root: /home/jyj/rubys/rails3-mongoid-devise

    답변

    0

    내가 알 수없는 authenticate_person에 무슨 일이 있었는지 몰랐다 동안은, 내가 그랬어 sign_out이 작동하도록 관리하십시오. 트릭은 route.rb에 다음 최우선 줄을 추가하는 것입니다

    devise_for : 사람 가져 오기 'sign_out'을 할 => 끝

    그래서 분명히 할 수있는 방법이 없습니다 '/ 세션 #의 sign_out을 고안' 사용자 자체가 아닌 새로운 사용자 범주를 인식하도록하십시오! 왜 그런지에 대한 도움을 주시면 감사하겠습니다.

    관련 문제