2014-10-01 14 views
5

Próbowałem stworzyć model użytkownika z devise (do tej pory w mojej aplikacji nie miałem problemu z robieniem modeli lub dodaniem atrybutów). BiegnęSzyny wymyślić błąd "NoMethodError ... scalić"

rails g devise user 

który tworzy w ten sposób:

invoke active_record 
    create db/migrate/20140930235224_devise_create_users.rb 
    create app/models/user.rb 
    invoke test_unit 
    create  test/models/user_test.rb 
    create  test/fixtures/users.yml 
    insert app/models/user.rb 
    route devise_for :users 

Potem próbuję uruchomić

rake db:migrate 

Który daje mi następujące

rake aborted! 
NoMethodError: undefined method `merge!' for #<ActionDispatch::Routing::Mapper::Scope:0x9fc73a4> 
/home/user/Desktop/MyApp/config/routes.rb:2:in `block in <top (required)>' 
/home/user/Desktop/MyApp/config/routes.rb:1:in `<top (required)>' 
/home/user/Desktop/MyApp/config/environment.rb:5:in `<top (required)>' 
Tasks: TOP => db:migrate => environment 
(See full trace by running task with --trace) 

Co może być problemem?

Linia 2 na trasach jest:

devise_for :users 

i linii 5 dla środowiska jest:

Rails.application.initialize! 

Odpowiedz

2

Wygląda na to, może to być problem z opracowania i najnowsza wersja Rails. Spojrzeć na te kwestie na opracować Github:

Ten blog post wyjaśnia, że ​​istnieje gałąź z poprawką, jednak jeśli masz zamiar używaj tego w produkcji, prawdopodobnie powinieneś poczekać, aż Devise scali poprawkę z mistrzem.

+0

Dzięki, w międzyczasie powinienem zmienić listę klejnotów z tego: gem 'devise', '~> 3.3.0' do tego: gem 'devise', '~> 3.3.0',: git => 'https://github.com/plataformatec/devise.git',: branch => 'lm-rails-4-2' –

+0

Tak, wypróbuj to i napraw rozwiązanie problemu. Pamiętaj, aby go wymienić, zanim rozpoczniesz transmisję na żywo. –

+0

Te problemy są teraz zamknięte, a najnowsza wersja narzędzia nie ma już tego problemu. – campeterson

22

Sprawdź, jaka wersja Devise zainstalowaniu uruchamiając:

bundle show devise 

Dzięki najnowszej wersji Rails 4.2.0 opracowania muszą być przeniesieni do 3.4.0 lub wyższej. Aby to zrobić, należy określić w swojej Gemfile:

gem 'devise', '~> 3.4.0' 

Następnie uruchom:

bundle update devise 
+0

Dziękujemy! Mój pomysł był nieaktualny, zanim połączyli tę poprawkę. –

+0

@lorindaapps - Dzięki! pracuje dla mnie. 1+ za to. – kpp

1

Aktualizacja z wersji 3.3.0 do devise 3.4.0 w moim Gemfile i prowadzenia wiązki aktualizacji devise pracował jak magia dla mnie. Im działają szyny 4.2.0.

Powiązane problemy