2013-06-20 2 views
1

사용자가 트위터를 통해 내 사이트에 액세스 할 수있게하려면 devise 및 omniauth를 사용하고 있습니다. 가입은 정상적으로 작동하지만 로그인을 시도하면 다음과 같은 오류가 점점 계속 :정의되지 않은 지역 변수 또는 메소드`encrypted_password '

"정의되지 않은 지역 변수 또는 메소드`encrypted_password는 어디에서나 '#은"

것은 내 사용자 모델은`encrypted_password는 사용하지 않는다는 것입니다'. MongoDB와 Mongoid를 사용하고 있습니다. 전체 추적 : 당신이 mongoid의 ORM을 사용하고 있기 때문에

C:/Ruby200-x64/lib/ruby/gems/2.0.0/bundler/gems/mongoid-fe7f43430580/lib/mongoid/attributes.rb:321:in `method_missing' 
devise (3.0.0.rc) lib/devise/models/database_authenticatable.rb:118:in `authenticatable_salt' 
devise (3.0.0.rc) lib/devise/models/authenticatable.rb:204:in `serialize_into_session' 
devise (3.0.0.rc) lib/devise.rb:432:in `block (2 levels) in configure_warden!' 
warden (1.2.1) lib/warden/session_serializer.rb:27:in `store' 
warden (1.2.1) lib/warden/proxy.rb:175:in `set_user' 
devise (3.0.0.rc) lib/devise/controllers/helpers.rb:135:in `sign_in' 
devise (3.0.0.rc) lib/devise/controllers/helpers.rb:255:in `sign_in_and_redirect' 
app/controllers/omniauth_callbacks_controller.rb:7:in `all' 
actionpack (4.0.0.rc1) lib/action_controller/metal/implicit_render.rb:4:in `send_action' 
actionpack (4.0.0.rc1) lib/abstract_controller/base.rb:189:in `process_action' 
actionpack (4.0.0.rc1) lib/action_controller/metal/rendering.rb:10:in `process_action' 
actionpack (4.0.0.rc1) lib/abstract_controller/callbacks.rb:18:in `block in process_action' 
activesupport (4.0.0.rc1) lib/active_support/callbacks.rb:432:in `_run__1123313306__process_action__callbacks' 
activesupport (4.0.0.rc1) lib/active_support/callbacks.rb:80:in `run_callbacks' 
actionpack (4.0.0.rc1) lib/abstract_controller/callbacks.rb:17:in `process_action' 
actionpack (4.0.0.rc1) lib/action_controller/metal/rescue.rb:29:in `process_action' 
actionpack (4.0.0.rc1) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action' 
activesupport (4.0.0.rc1) lib/active_support/notifications.rb:159:in `block in instrument' 
activesupport (4.0.0.rc1) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (4.0.0.rc1) lib/active_support/notifications.rb:159:in `instrument' 
actionpack (4.0.0.rc1) lib/action_controller/metal/instrumentation.rb:30:in `process_action' 
actionpack (4.0.0.rc1) lib/action_controller/metal/params_wrapper.rb:245:in `process_action' 
actionpack (4.0.0.rc1) lib/abstract_controller/base.rb:136:in `process' 
actionpack (4.0.0.rc1) lib/abstract_controller/rendering.rb:44:in `process' 
actionpack (4.0.0.rc1) lib/action_controller/metal.rb:195:in `dispatch' 
actionpack (4.0.0.rc1) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' 
actionpack (4.0.0.rc1) lib/action_controller/metal.rb:231:in `block in action' 
actionpack (4.0.0.rc1) lib/action_dispatch/routing/route_set.rb:80:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/routing/route_set.rb:80:in `dispatch' 
actionpack (4.0.0.rc1) lib/action_dispatch/routing/route_set.rb:48:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/routing/mapper.rb:44:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/journey/router.rb:71:in `block in call' 
actionpack (4.0.0.rc1) lib/action_dispatch/journey/router.rb:59:in `each' 
actionpack (4.0.0.rc1) lib/action_dispatch/journey/router.rb:59:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/routing/route_set.rb:654:in `call' 
omniauth (1.1.4) lib/omniauth/strategy.rb:401:in `call_app!' 
omniauth (1.1.4) lib/omniauth/strategy.rb:363:in `callback_phase' 
omniauth-oauth (1.0.1) lib/omniauth/strategies/oauth.rb:58:in `callback_phase' 
omniauth (1.1.4) lib/omniauth/strategy.rb:226:in `callback_call' 
omniauth (1.1.4) lib/omniauth/strategy.rb:182:in `call!' 
omniauth (1.1.4) lib/omniauth/strategy.rb:164:in `call' 
C:/Ruby200-x64/lib/ruby/gems/2.0.0/bundler/gems/mongoid-fe7f43430580/lib/rack/mongoid/middleware/identity_map.rb:34:in `block in call' 
C:/Ruby200-x64/lib/ruby/gems/2.0.0/bundler/gems/mongoid-fe7f43430580/lib/mongoid/unit_of_work.rb:39:in `unit_of_work' 
C:/Ruby200-x64/lib/ruby/gems/2.0.0/bundler/gems/mongoid-fe7f43430580/lib/rack/mongoid/middleware/identity_map.rb:34:in `call' 
warden (1.2.1) lib/warden/manager.rb:35:in `block in call' 
warden (1.2.1) lib/warden/manager.rb:34:in `catch' 
warden (1.2.1) lib/warden/manager.rb:34:in `call' 
rack (1.5.2) lib/rack/etag.rb:23:in `call' 
rack (1.5.2) lib/rack/conditionalget.rb:25:in `call' 
rack (1.5.2) lib/rack/head.rb:11:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/params_parser.rb:27:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/flash.rb:241:in `call' 
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context' 
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/cookies.rb:486:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' 
activesupport (4.0.0.rc1) lib/active_support/callbacks.rb:392:in `_run__1368160554__call__callbacks' 
activesupport (4.0.0.rc1) lib/active_support/callbacks.rb:80:in `run_callbacks' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/callbacks.rb:27:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/reloader.rb:64:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/remote_ip.rb:76:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' 
railties (4.0.0.rc1) lib/rails/rack/logger.rb:38:in `call_app' 
railties (4.0.0.rc1) lib/rails/rack/logger.rb:21:in `block in call' 
activesupport (4.0.0.rc1) lib/active_support/tagged_logging.rb:67:in `block in tagged' 
activesupport (4.0.0.rc1) lib/active_support/tagged_logging.rb:25:in `tagged' 
activesupport (4.0.0.rc1) lib/active_support/tagged_logging.rb:67:in `tagged' 
railties (4.0.0.rc1) lib/rails/rack/logger.rb:21:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/request_id.rb:21:in `call' 
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call' 
rack (1.5.2) lib/rack/runtime.rb:17:in `call' 
activesupport (4.0.0.rc1) lib/active_support/cache/strategy/local_cache.rb:83:in `call' 
rack (1.5.2) lib/rack/lock.rb:17:in `call' 
actionpack (4.0.0.rc1) lib/action_dispatch/middleware/static.rb:64:in `call' 
railties (4.0.0.rc1) lib/rails/engine.rb:511:in `call' 
railties (4.0.0.rc1) lib/rails/application.rb:96:in `call' 
rack (1.5.2) lib/rack/lock.rb:17:in `call' 
rack (1.5.2) lib/rack/content_length.rb:14:in `call' 
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service' 
C:/Ruby200-x64/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service' 
C:/Ruby200-x64/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run' 
C:/Ruby200-x64/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread' 
+0

Devise 사용하십시오. 마이그레이션을 실행 했습니까? –

+0

MongoDB와 Mongoid를 사용하고 있습니다. – Mulaiko

답변

4

명시 적 모델에서 필드를 정의 할 필요가있다. 나는 당신과 함께가는 모듈을 지정하는 맨 위에 주석이있는 필드 목록을 주었다. 사용중인 기기 모듈에 따라 필드를 복사해야합니다.

## Database authenticatable 
    field :email,    :type => String, :default => "" 
    field :encrypted_password, :type => String, :default => "" 

    ## Password Expirable 
    field :password_changed_at, :type => Time 

    ## Recoverable 
    field :reset_password_token, :type => String 
    field :reset_password_sent_at, :type => Time 

    ## Rememberable 
    field :remember_created_at, :type => Time 

    ## Trackable 
    field :sign_in_count,  :type => Integer, :default => 0 
    field :current_sign_in_at, :type => Time 
    field :last_sign_in_at, :type => Time 
    field :current_sign_in_ip, :type => String 
    field :last_sign_in_ip, :type => String 

    ## Encryptable 
    field :password_salt, :type => String 

    ## Confirmable 
    field :confirmation_token, :type => String 
    field :confirmed_at,   :type => Time 
    field :confirmation_sent_at, :type => Time 
    field :unconfirmed_email, :type => String # Only if using reconfirmable 
    field :deactivated,   :type => Boolean, :default => false 
    field :status,    :type => String, :default => Status::PENDING 

    ## Lockable 
    field :failed_attempts, :type => Integer, :default => 0 # Only if lock strategy is :failed_attempts 
    field :unlock_token, :type => String # Only if unlock strategy is :email or :both 
    field :locked_at,  :type => Time 

    ## Token authenticatable 
    field :authentication_token, :type => String 

    ## Invitable 
    field :invitation_token, :type => String 
    field :invitation_sent_at, :type => Time 
    field :invitation_accepted_at, :type => Time 
    field :invitation_limit, :type => Integer, :default => 0 
    field :invited_by_id, :type => String 
    field :invited_by_type, :type => String 
+0

나는 omniauth를 사용하여 함께 노력합니다. 정상적인 로그인 및 omniauth에 대한 개발자의 질문에 대해서는 제 3 자 로그인 (트위터, 페이스 북 등)이 가능합니다. – Mulaiko

+0

그러면 database_authenticatable 마이그레이션을 추가해야합니다. 그것은 암호화 된 암호를 DB에 추가합니다. 't.database_authenticatable : null => false' –

+1

MongoDB와 Mongoid를 사용하고있는 사람 – Mulaiko

관련 문제