web-dev-qa-db-fra.com

`method_missing ': méthode non définie` concevez' pour l'utilisateur (appelez 'User.connection' pour établir une connexion)

Je suis nouveau sur Ruby on Rails et j'essaie de faire ma première demande. J'ai des problèmes quand je lance une commande Rails generate. Je reçois l'erreur suivante

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>'

Même si je n'ajoute pas le gem 'devise' dans mon Gemfile, j'obtiens toujours cette erreur. J'ai même créé une nouvelle application et j'ai cette erreur.

J'ai même essayé les réponses à méthode non définie 'concevez' pour User

Une idée de comment je peux me débarrasser de cette erreur?

EDIT Je n'ai actuellement aucun modèle enter image description here

13
Bot

Cela se produit parce que vous avez manqué la commande:

Rails generate devise:install

Il vous suffit de commenter toutes les lignes de conception temporellement (dans routes.rb/user.rb) pour ne pas augmenter.
Et exécutez à nouveau la commande.

37
itsnikolay

C'est la commande appropriée.

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

Ici, le modèle a été créé avant que "Rails ne génère:" installez ". Vous devez donc revenir en arrière sur tout commentaire créé par ce modèle:

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

et aussi cela

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

À présent, lancez "Rails génère le schéma: installer" et décommentez ce qui précède.

15
Tom

J'ai rencontré un problème similaire avec un projet existant fraîchement extrait d'un dépôt:

Les fichiers manquants spécifiques étaient:

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

Dans ce cas, étant donné que devise.rb était dans la liste .gitignore, un fichier config/initializers/devise.rb.example pouvait être copié.

1
GSP

Ou, comme moi, après avoir ajouté:

gem 'devise'

à Gemfile, et en cours d'exécution:

$ bundle install

vous avez oublié de redémarrer le serveur avec CtrlC et:

$ Rails s
1
Arta

C'est un problème un peu étrange que j'ai moi aussi rencontré! Essayez d’ajouter extend Devise::Models dans le fichier app/models/install.rb comme expliqué dans le lien ci-dessous.

J'espère que cela vous aidera! https://github.com/plataformatec/devise/issues/3877

0
Srikiran Sistla

Rails g devise install! = Rails g devise:install

J'ai aussi rencontré ce problème. En exécutant Rails generate devise install (sic!), Rien ne semblait ne pas avoir fonctionné. La sortie du terminal était:

$ 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

Mais j'ai raté le point-virgule . En annulant ces modifications, puis en exécutant Rails generate devise:install (notez le : entre devise et install), tout a parfaitement fonctionné. Aussi, vous obtenez une sortie beaucoup plus étendue:

$ 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

  ===============================================================================
0
Steven