未定义的方法’设计’为用户

我一直在寻求掌握设计及其运作方式,并且在第一道障碍时有点堕落。 我已经看了几个地方,但似乎找不到有这个错误的人。

所以我创建了一个带索引视图的简单Home控制器并添加了root’home #index’,并确保在development.rb文件中设置了默认的url选项。 然后我输入:

rails generate devise User 

这在模型中创建了我的user.rb文件,其中包含以下内容:

 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 

到目前为止非常简单,我有以下Gemfile:

 source 'https://rubygems.org' gem 'rails', '4.0.5' gem 'sqlite3' gem 'sass-rails', '~> 4.0.2' gem 'devise' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.0.0' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', '~> 1.2' group :doc do gem 'sdoc', require: false end gem 'bcrypt' 

当我运行rake db:migrate时,我收到以下错误:

 rake aborted! NoMethodError: undefined method `devise' for User (call 'User.connection' to establish a connection):Class /home/jonlee/.rvm/gems/ruby-2.1.1@railstutorial_rails_4_0/gems/activerecord-4.0.5/lib/active_record/dynamic_matchers.rb:22:in `method_missing' /home/jonlee/Projects/rails/userauth/app/models/user.rb:4:in `' /home/jonlee/Projects/rails/userauth/app/models/user.rb:1:in `' 

我不知道为什么用户模型无法找到’设计’方法,因为我可以看到它肯定存在。

我在rake路由,rails服务器和rails控制台上遇到了类似的错误。

有关更多信息,我使用ruby 2.1.1如果有帮助吗?

devise添加到您的应用程序Gemfile并通过运行bundle install安装它。 在此之后,您应该运行以下生成器命令:

 rails generate devise:install 

该生成器将安装一个初始化程序your_application/config/initializers/devise.rb ,它包含所有Devise的配置选项。

您错过了上面提到的步骤,这就是为什么没有设置设计配置,并且您在模型类User收到undefined method 'devise' for User错误的undefined method 'devise' for User

我有同样的问题,但有其他原因。 这对某些人来说也可能是个问题。 停止rails服务器,然后键入

  rails s 

重新启动它

除了Kirti的跑步答案

 rails generate devise:install 

您可能想要将设计初始化程序重命名为

 config/initializers/01_devise.rb 

因为如果在设计和触摸ApplicationController之前运行任何其他初始化程序(例如config / initializers / active_admin.rb),您将得到相同的错误。

根据http://guides.rubyonrails.org/configuring.html#using-initializer-files,您可以使用文件命名控制初始值设定项的加载顺序。

我运行了生成器$ rails generate devise:install但是遇到了同样的问题。

无论如何它对我extend Devise::Models :将extend Devise::Models添加到用户模型。

我在配置Devise(Ruby 2.4.1 / Rails 5.1.2)时遇到了类似的问题。 在我的情况下,我执行后似乎没有创建以下文件: rails generate devise:install第一次rails generate devise:install

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

我遵循的步骤:

1)从您的MODEL中评论以下内容:

  #devise :database_authenticatable, :registerable, #:recoverable, :rememberable, :trackable, :validatable 

2)来自routes.rb的评论:

 #devise_for :sessions 

3)运行rails generate devise:install再次rails generate devise:install ,你应该看到这次创建了一些文件。 希望你的工作!

4)取消1)和2)

5)执行: rake db:migrate

在这一点上它应该工作。 希望它可以帮到某人!

所以当我这样做时,我刚刚出现了同样的错误:

rails g控制器客户端/时间表

事实certificate问题出在生成的帮助器上:

应用程序/佣工/客户/ timesheet_helper.rb:

 module Client::TimesheetHelper end 

客户端是使用User模型的单表inheritance的模型。 有些事情变得非常混乱,客户端是模型(类)和模块,它导致了这个神秘的错误消息。

因人而异。

我在安装Devise和Mongoid时遇到了同样的错误,但忘记在config / initializers / devise.rb中将orm从active_record更改为mongoid

应该:

 require 'devise/orm/mongoid' 

我遇到过同样的问题。 修复是取消注释:

 require 'devise/orm/active_record' 

config/initializers/active_admin.rb

我之前故意评论它,因为文档说:“支持:active_record(默认)”。

我不得不停止Spring预加载器进程:

 spring stop 

现在按预期工作

评论: –

 devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable 

user.rb模型中。 这对我有用