Jon*_*man 37 ruby ruby-on-rails devise
我一直在寻求掌握设计及其运作方式,并且在第一道障碍时有点堕落.我已经看了几个地方,但似乎无法找到有这个错误的人.
所以我创建了一个带索引视图的简单Home控制器并添加了root'home #index',并确保在development.rb文件中设置了默认的url选项.然后我输入:
rails generate devise User
Run Code Online (Sandbox Code Playgroud)
这在模型中创建了我的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
Run Code Online (Sandbox Code Playgroud)
到目前为止非常简单,我有以下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'
Run Code Online (Sandbox Code Playgroud)
当我运行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 `<class:User>'
/home/jonlee/Projects/rails/userauth/app/models/user.rb:1:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)
我不知道为什么用户模型无法找到'设计'方法,因为我可以看到它肯定存在.
我在rake路由,rails服务器和rails控制台上遇到了类似的错误.
有关更多信息,我使用ruby 2.1.1,如果这有帮助?
Kir*_*rat 89
添加devise到您的应用程序Gemfile并通过运行安装它bundle install.在此之后,您应该运行以下生成器命令:
rails generate devise:install
Run Code Online (Sandbox Code Playgroud)
该生成器将安装一个初始化程序your_application/config/initializers/devise.rb ,它包含所有Devise的配置选项.
您错过了上述步骤,这就是为什么没有设置设计配置并且您undefined method 'devise' for User在模型类中收到错误的原因User.
mmi*_*ike 17
我有同样的问题,但有其他原因.这对某些人来说也可能是个问题.停止rails服务器,然后键入
rails s
Run Code Online (Sandbox Code Playgroud)
要重新启动
Ste*_*anu 15
我在配置Devise(Ruby 2.4.1/Rails 5.1.2)时遇到了类似的问题.在我的情况下,我执行后似乎没有创建以下文件:rails generate devise:install这是第一次.
create config/initializers/devise.rb
create config/locales/devise.en.yml
Run Code Online (Sandbox Code Playgroud)
我遵循的步骤:
1)从您的MODEL中评论以下内容:
#devise :database_authenticatable, :registerable,
#:recoverable, :rememberable, :trackable, :validatable
Run Code Online (Sandbox Code Playgroud)
2)来自routes.rb的评论:
#devise_for :sessions
Run Code Online (Sandbox Code Playgroud)
3)rails generate devise:install再次运行,你会看到这次创建了一些文件.希望你的工作!
4)取消1)和2)
5)执行: rake db:migrate
在这一点上,它应该工作.希望它可以帮到某人!
abl*_*bla 14
我运行了发电机,$ rails generate devise:install但遇到了同样的问题.
无论如何它对我有用:添加extend Devise::Models到用户模型.
Kev*_*hrt 11
除了Kirti的跑步答案
rails generate devise:install
Run Code Online (Sandbox Code Playgroud)
您可能想要将设计初始化程序重命名为
config/initializers/01_devise.rb
Run Code Online (Sandbox Code Playgroud)
因为如果任何其他初始化程序(例如config/initializers/active_admin.rb)在设计之前运行并触及ApplicationController,您将得到相同的错误.
根据 http://guides.rubyonrails.org/configuring.html#using-initializer-files, 您可以使用文件命名控制初始化程序的加载顺序.
小智 5
我遇到过同样的问题。解决方法是取消注释:
require 'devise/orm/active_record'
Run Code Online (Sandbox Code Playgroud)
在config/initializers/active_admin.rb。
我之前故意将其注释掉,因为文档说:“支持:active_record(默认)”。
| 归档时间: |
|
| 查看次数: |
41179 次 |
| 最近记录: |