Подтвердить что ты не робот

'method_missing': undefined method 'devise' для пользователя (вызов "User.connection" для установления соединения)

Я новичок в Ruby on Rails и пытаюсь сделать свое первое приложение. У меня возникают проблемы, хотя в любое время я запускаю команду rails generate. Я получаю следующую ошибку

MyUsers-MacBook-Pro:MyApp MyUser$ rails generate devise:install
Warning: Running 'gem pristine --all' to regenerate your installed gemspecs (and deleting then reinstalling your bundle if you use bundle --path) will improve the startup performance of Spring.
/Users/MyUser/.gem/ruby/2.0.0/gems/activerecord-4.1.2.rc1/lib/active_record/dynamic_matchers.rb:26:in 'method_missing': undefined method 'devise' for User (call 'User.connection' to establish a connection):Class (NoMethodError)
    from /Users/MyUser/.Trash/MyApp/app/models/user.rb:4:in '<class:User>'
    from /Users/MyUser/.Trash/MyApp/app/models/user.rb:1:in '<top (required)>'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:443:in 'load'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:443:in 'block in load_file'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:633:in 'new_constants_in'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:442:in 'load_file'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:342:in 'require_or_load'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:480:in 'load_missing_constant'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:180:in 'const_missing'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/inflector/methods.rb:238:in 'const_get'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/inflector/methods.rb:238:in 'block in constantize'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/inflector/methods.rb:236:in 'each'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/inflector/methods.rb:236:in 'inject'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/inflector/methods.rb:236:in 'constantize'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:552:in 'get'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:583:in 'constantize'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise.rb:297:in 'get'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/mapping.rb:77:in 'to'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/mapping.rb:72:in 'modules'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/mapping.rb:89:in 'routes'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/mapping.rb:156:in 'default_used_route'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/mapping.rb:66:in 'initialize'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise.rb:331:in 'new'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise.rb:331:in 'add_mapping'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/rails/routes.rb:221:in 'block in devise_for'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/rails/routes.rb:220:in 'each'
    from /Library/Ruby/Gems/2.0.0/gems/devise-3.2.4/lib/devise/rails/routes.rb:220:in 'devise_for'
    from /Users/MyUser/.Trash/MyApp/config/routes.rb:2:in 'block in <top (required)>'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/actionpack-4.1.2.rc1/lib/action_dispatch/routing/route_set.rb:337:in 'instance_exec'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/actionpack-4.1.2.rc1/lib/action_dispatch/routing/route_set.rb:337:in 'eval_block'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/actionpack-4.1.2.rc1/lib/action_dispatch/routing/route_set.rb:315:in 'draw'
    from /Users/MyUser/.Trash/MyApp/config/routes.rb:1:in '<top (required)>'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:241:in 'load'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:241:in 'block in load'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:232:in 'load_dependency'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:241:in 'load'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/application/routes_reloader.rb:40:in 'block in load_paths'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/application/routes_reloader.rb:40:in 'each'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/application/routes_reloader.rb:40:in 'load_paths'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/application/routes_reloader.rb:16:in 'reload!'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/application/routes_reloader.rb:26:in 'block in updater'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/file_update_checker.rb:75:in 'call'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/file_update_checker.rb:75:in 'execute'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/application/routes_reloader.rb:27:in 'updater'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/application/routes_reloader.rb:7:in 'execute_if_updated'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/application/finisher.rb:71:in 'block in <module:Finisher>'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/initializable.rb:30:in 'instance_exec'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/initializable.rb:30:in 'run'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/initializable.rb:55:in 'block in run_initializers'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tsort.rb:150:in 'block in tsort_each'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tsort.rb:183:in 'block (2 levels) in each_strongly_connected_component'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tsort.rb:219:in 'each_strongly_connected_component_from'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tsort.rb:182:in 'block in each_strongly_connected_component'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tsort.rb:180:in 'each'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tsort.rb:180:in 'each_strongly_connected_component'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tsort.rb:148:in 'tsort_each'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/initializable.rb:54:in 'run_initializers'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/railties-4.1.2.rc1/lib/rails/application.rb:300:in 'initialize!'
    from /Users/MyUser/.Trash/MyApp/config/environment.rb:5:in '<top (required)>'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:247:in 'require'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:247:in 'block in require'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:232:in 'load_dependency'
    from /Users/MyUser/.gem/ruby/2.0.0/gems/activesupport-4.1.2.rc1/lib/active_support/dependencies.rb:247:in 'require'
    from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application.rb:92:in 'preload'
    from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application.rb:140:in 'serve'
    from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application.rb:128:in 'block in run'
    from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application.rb:122:in 'loop'
    from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application.rb:122:in 'run'
    from /Library/Ruby/Gems/2.0.0/gems/spring-1.1.3/lib/spring/application/boot.rb:18:in '<top (required)>'
    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in 'require'
    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in 'require'
    from -e:1:in '<main>'

Даже если я не добавлю gem 'devise' devise gem 'devise' в мой Gemfile, я все равно получаю эту ошибку. Я даже создал новое приложение и получил эту ошибку.

Я даже попробовал ответы на неопределенный метод 'devise' для пользователя

Любая идея, как я могу избавиться от этой ошибки?

EDIT В настоящее время у меня нет моделей enter image description here

4b9b3361

Ответ 1

Это происходит потому, что вы пропустили команду:

rails generate devise:install

Вам нужно просто прокомментировать все строки устройства (временно, в route.rb/user.rb), чтобы не получить рейз.
И снова запустите команду.

Ответ 2

Это соответствующий заказ.

gem 'devise'
Run the bundle command to install it.
rails generate devise:install
rails generate devise MODEL

Здесь модель была создана до того, как "rails generate devise: install". Так что вам нужно вернуться к комментарию обо всем, что создала модель:

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
#devise :database_authenticatable, :registerable,
#:recoverable, :rememberable, :trackable, :validatable
end

а также

Rails.application.routes.draw do
#devise_for :users
end

Теперь запустите "rails generate devise: install" и после этого раскомментируйте выше.

Ответ 3

Я столкнулся с аналогичной проблемой с существующим проектом, недавно выписанным из репо:

Конкретными недостающими файлами были:

config/initializers/devise.rb 
config/locales/devise.en.yml

В этом случае, поскольку devise.rb был в списке .gitignore был файл config/initializers/devise.rb.example который можно было скопировать.

Ответ 4

Или, как и я, после добавления:

gem 'devise'

в Gemfile и работает:

$ bundle install

вы забыли перезапустить сервер с помощью Ctrl C и:

$ rails s

Ответ 5

Это немного странная проблема, с которой я тоже столкнулся! Попробуйте добавить extend Devise::Models в файле app/models/install.rb, как описано в приведенной ниже ссылке.

Надеюсь это поможет! https://github.com/plataformatec/devise/issues/3877

Ответ 6

rails g devise install ! = rails g devise:install

Я столкнулся с этой проблемой. Выполнение rails generate devise install (sic!), Ничего похожего не получилось. Выход терминала был:

$ rails g devise install
  Running via Spring preloader in process 5422
      invoke  active_record
      create    db/migrate/20180306165306_devise_create_installs.rb
      create    app/models/install.rb
      insert    app/models/install.rb
       route  devise_for :installs

Но я пропустил точку с запятой. Возвращая эти изменения, а затем исполняющие rails generate devise:install (обратите внимание : между devise и install), все получилось отлично. Также вы получаете гораздо более обширный результат:

$ rails g devise:install
  Running via Spring preloader in process 5218
      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml
  ===============================================================================

  Some setup you must do manually if you haven't yet:

    1. Ensure you have defined default url options in your environments files. Here
       is an example of default_url_options appropriate for a development environment
       in config/environments/development.rb:

         config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

       In production, :host should be set to the actual host of your application.

    2. Ensure you have defined root_url to *something* in your config/routes.rb.
       For example:

         root to: "home#index"

    3. Ensure you have flash messages in app/views/layouts/application.html.erb.
       For example:

         <p class="notice"><%= notice %></p>
         <p class="alert"><%= alert %></p>

    4. You can copy Devise views (for customization) to your app by running:

         rails g devise:views

  ===============================================================================