2013-12-11 19 views
6

Devise Kullanıcı modelime özel alanlar ekleyerek this tutorial'u izledim ve her şey çoğunlukla iyi çalışıyor gibi görünüyor. Böyle okur benim Uygulamadan çıkış yapmak çalıştığınızda Ancak, zaman zaman ben bir hata alırsınız: vasiyetleRaylar 4 + Custom Devise öznitelikleri - ParameterSanitizer Hatası

NameError :: SessionsController # Yeni

başlatılmamış sabit Kullanıcı :: ParameterSanitizer

Çıkarılan kaynak (satır # 11):

9 def devise_parameter_sanitizer 
10 if resource_class == User 
11  User::ParameterSanitizer.new(User, :user, params) 
12 else 
13  super 
14 end 

Bahsettiğim gibi, başvurum genelde iyi çalışıyor. Bazen bu hatayı almadan kapatabilirim. Sadece beni şaşırtıyor!

DÜZENLEME: Rayların sunucuya yeniden başlatılması, hata iletisinin dağılmasına neden olur, ancak daha kalıcı bir çözüm arıyordum.

DÜZENLEME: Tam yığın takibi:

kullanıcı sınıfı değiştirilmiş ve geliştirme modunda otomatik yeniden yüklendikten
app/controllers/application_controller.rb:11:in 'devise_parameter_sanitizer' 
devise (3.2.2) app/controllers/devise/sessions_controller.rb:40:in 'sign_in_params' 
devise (3.2.2) app/controllers/devise/sessions_controller.rb:8:in 'new' 
actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in 'send_action' 
actionpack (4.0.0) lib/abstract_controller/base.rb:189:in 'process_action' 
actionpack (4.0.0) lib/action_controller/metal/rendering.rb:10:in 'process_action' 
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:18:in 'block in process_action' 
activesupport (4.0.0) lib/active_support/callbacks.rb:443:in '_run__1105479583300404070__process_action__callbacks' 
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in 'run_callbacks' 
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:17:in 'process_action' 
actionpack (4.0.0) lib/action_controller/metal/rescue.rb:29:in 'process_action' 
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:31:in 'block in process_action' 
activesupport (4.0.0) lib/active_support/notifications.rb:159:in 'block in instrument' 
activesupport (4.0.0) lib/active_support/notifications/instrumenter.rb:20:in 'instrument' 
activesupport (4.0.0) lib/active_support/notifications.rb:159:in 'instrument' 
actionpack (4.0.0) lib/action_controller/metal/instrumentation.rb:30:in 'process_action' 
actionpack (4.0.0) lib/action_controller/metal/params_wrapper.rb:245:in 'process_action' 
activerecord (4.0.0) lib/active_record/railties/controller_runtime.rb:18:in 'process_action' 
actionpack (4.0.0) lib/abstract_controller/base.rb:136:in 'process' 
actionpack (4.0.0) lib/abstract_controller/rendering.rb:44:in 'process' 
actionpack (4.0.0) lib/action_controller/metal.rb:195:in 'dispatch' 
actionpack (4.0.0) lib/action_controller/metal/rack_delegation.rb:13:in 'dispatch' 
actionpack (4.0.0) lib/action_controller/metal.rb:231:in 'block in action' 
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in 'call' 
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:80:in 'dispatch' 
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:48:in 'call' 
actionpack (4.0.0) lib/action_dispatch/routing/mapper.rb:44:in 'call' 
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:71:in 'block in call' 
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in 'each' 
actionpack (4.0.0) lib/action_dispatch/journey/router.rb:59:in 'call' 
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:655:in 'call' 
warden (1.2.3) lib/warden/manager.rb:35:in 'block in call' 
warden (1.2.3) lib/warden/manager.rb:34:in 'catch' 
warden (1.2.3) 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) lib/action_dispatch/middleware/params_parser.rb:27:in 'call' 
actionpack (4.0.0) 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) lib/action_dispatch/middleware/cookies.rb:486:in 'call' 
activerecord (4.0.0) lib/active_record/query_cache.rb:36:in 'call' 
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in 'call' 
activerecord (4.0.0) lib/active_record/migration.rb:369:in 'call' 
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in 'block in call' 
activesupport (4.0.0) lib/active_support/callbacks.rb:373:in '_run__1611111079631103792__call__callbacks' 
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in 'run_callbacks' 
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in 'call' 
actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in 'call' 
actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in 'call' 
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in 'call' 
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in 'call' 
railties (4.0.0) lib/rails/rack/logger.rb:38:in 'call_app' 
railties (4.0.0) lib/rails/rack/logger.rb:21:in 'block in call' 
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in 'block in tagged' 
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in 'tagged' 
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in 'tagged' 
railties (4.0.0) lib/rails/rack/logger.rb:21:in 'call' 
actionpack (4.0.0) 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) 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) lib/action_dispatch/middleware/static.rb:64:in 'call' 
railties (4.0.0) lib/rails/engine.rb:511:in 'call' 
railties (4.0.0) lib/rails/application.rb:97: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' 
/Users/joelbrewer/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:138:in 'service' 
/Users/joelbrewer/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/httpserver.rb:94:in 'run' 
/Users/joelbrewer/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/webrick/server.rb:295:in 'block in start_thread' 
+0

Yığın izlemeniz, "ApplicationController" öğesinden gelen hatayı gösterir, ancak dahil ettiğiniz "NameError", "Devise :: SessionsController # New" kaynağından geliyor. Hangi sınıfta fiilen 'devise_parameter_sanitizer' tanımını yapıyorsunuz? – parhamr

+0

'devise_parameter_sanitizer'' ApplicationController' içinde tanımlanmıştır - öğreticiyi kontrol edebilirsiniz (http://blog.12spokes.com/web-design-development/adding-custom-fields-to-your-devise-user-model -in-raylar-4 /) Ben de daha fazla bilgi için bağlı. –

+0

'Lib''deki dosyaların her zaman otomatik olarak yüklenmediğini ve özellikle de değiştirildiği zaman yeniden yüklenmediğini unutmayın. Lütfen "config.autoload_paths" için 'config/application.rb' kontrol edin. Çalışmak için '# Rails.root}/lib' – parhamr

cevap

13

, Kullanıcı :: ParameterSanitizer sabit yok edilir. Ancak User :: ParameterSanitizer, sadece kaynak dosyası sanitizers başlatıcınızda require 'd olduğunda oluşturulur.

User::ParameterSanitizer'u UserParameterSanitizer olarak yeniden adlandırın ve iyi durumda olmalısınız.

+0

Seems içeren bir dizi olmalıdır! Çok teşekkürler! –

+0

Garip, ama işe yarıyor. Teşekkürler! –

+0

Bu çalışır! Ama nedenini anlamıyorum. Açıklayabilir misin? –

0

Bunu geliştirme aşamasında araştırdım ve yerel sunucumu yeniden başlatarak çözdüm.

+0

Bu soruya şunu değindim: "Raylar sunucusunu yeniden başlatmak hata mesajının yayılmasına neden oluyor, ancak daha kalıcı bir çözüm arıyordum." –