2015-09-21 12 views
9

, yakut 2.2.2, 4.2.3Bu devise_group çağrısı için neden NoMethodError alıyorum? Ben 3.5.2 hazırlamak kullanıyorum

class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    protect_from_forgery with: :exception 

    devise_group :user, contains: [:manager, :employee] 
end 

Benim anlayış Devise otomatik these helpers yüklemek gerekir ve ben özel bir şey yapmadan ApplicationController bunları kullanabilmek için gerektiğidir raylar .

denemek ve 'raylar s' ile uygulamayı çalıştırmak ve bu hatayı alıyorum:

multi-user-role-devise/app/controllers/application_controller.rb:6:in <class:ApplicationController>': undefined method devise_group' for ApplicationController:Class (NoMethodError) from /home/me/ror-code/multi-user-role-devise/app/controllers/application_controller.rb:1:in `' ....etc

Bunu nasıl düzeltebilirim?

Gemfile:

source 'https://rubygems.org' 
ruby '2.2.2' 
gem 'rails', '4.2.3' 
gem 'sqlite3' 
gem 'sass-rails', '~> 5.0' 
gem 'uglifier', '>= 1.3.0' 
gem 'coffee-rails', '~> 4.1.0' 
gem 'jquery-rails' 
gem 'turbolinks' 
gem 'jbuilder', '~> 2.0' 
gem 'foundation-rails' 
gem 'simple_form' 
gem 'devise' 
group :development do 
    gem 'better_errors' 
    gem 'quiet_assets' 
    gem 'rails_layout' 
    gem 'spring-commands-rspec' 
end 
group :development, :test do 
    gem 'factory_girl_rails' 
    gem 'faker' 
    gem 'rspec-rails' 
    gem 'byebug' 
    gem 'web-console', '~> 2.0' 
    gem 'spring' 
end 
group :test do 
    gem 'capybara' 
    gem 'database_cleaner' 
    gem 'launchy' 
    gem 'selenium-webdriver' 
end 

Yöneticisi sınıfı:

class Manager < User 
end 

Çalışan sınıfı: Bu Devise issue aracılığıyla okursanız

class Employee < User 
end 
+0

Şu anda testlerin neden geçtiğini araştırıyorum, hangi devise gem'de devise_group'yi test ediyor. Açıkçası, bir şey helpers.rb dosyası var ama benim uygulamada değil, bir nedenle. –

+0

Bunu geliştiricilerle ilgili bir sorun olarak dile getirdim. İnanıyorum ki, bu bir hata ile uğraşıyor ama lütfen soruyu cevaplamaya/hatayı düzeltmeye çalışmamaya izin vermeyin. issue: https://github.com/plataformatec/devise/issues/3757 –

+2

Devise başlatıcısında 'config.parent_controller' yeniden tanımladınız mı? –

cevap

0

aynı sorunla insanları bulacaksınız. Sonunda, olası bir devise_permitted_parameters.rb başlatıcısının tüm Devise yardımcılarının doğru yüklenmesini önlediğini öğreneceksiniz. Bu başlatıcıyı kaldırarak ve denetleyicinizdeki parametrelerinizi dezenfekte ederek sorunu çözmelisiniz.

Bu arada, ApplicationController numaralı telefona include Devise::Controllers::Helpers::ClassMethods numaralı telefondan ekleyebilirsiniz, ancak genelde kodlama stilinden kaçınmalısınız.

İlgili konular