2012-02-12 23 views
6

我得到错误从设计“用户不响应'设计'方法”当运行“导轨生成设计:安装”。想法重新如何解决?从设计得到错误“用户不响应'设计'方法”在运行时“rails生成设计:安装”

事实上,当试图运行“rails generate devise:install”时,我也注意到了这个错误。

注:

Gregs-MacBook-Pro:testapp greg$ rails generate devise:install 
/Library/Ruby/Gems/1.8/gems/devise-2.0.1/lib/devise/rails/routes.rb:406:in `raise_no_devise_method_error!': User does not respond to 'devise' method. This usually means you haven't loaded your ORM file or it's being loaded too late. To fix it, be sure to require 'devise/orm/YOUR_ORM' inside 'config/initializers/devise.rb' or before your application definition in 'config/application.rb' (RuntimeError) 
    from /Library/Ruby/Gems/1.8/gems/devise-2.0.1/lib/devise/rails/routes.rb:207:in `devise_for' 
    from /Library/Ruby/Gems/1.8/gems/devise-2.0.1/lib/devise/rails/routes.rb:203:in `each' 
    from /Library/Ruby/Gems/1.8/gems/devise-2.0.1/lib/devise/rails/routes.rb:203:in `devise_for' 
    from /Users/greg/source_rails/testapp/config/routes.rb:2 
    from /Library/Ruby/Gems/1.8/gems/actionpack-3.2.1/lib/action_dispatch/routing/route_set.rb:272:in `instance_exec' 
    from /Library/Ruby/Gems/1.8/gems/actionpack-3.2.1/lib/action_dispatch/routing/route_set.rb:272:in `eval_block' 
    from /Library/Ruby/Gems/1.8/gems/actionpack-3.2.1/lib/action_dispatch/routing/route_set.rb:249:in `draw' 

Gregs-MacBook-Pro:testapp greg$ ruby -v 
**ruby 1.8.7** (2010-01-10 patchlevel 249) [universal-darwin11.0] 

Gregs-MacBook-Pro:testapp greg$ rails -v 
**Rails 3.2.1** 

Gregs-MacBook-Pro:testapp greg$ gem list 

*** LOCAL GEMS *** 

actionmailer (3.2.1) 
actionpack (3.2.1) 
activemodel (3.2.1) 
activerecord (3.2.1) 
activeresource (3.2.1) 
activesupport (3.2.1) 
addressable (2.2.6) 
arel (3.0.0) 
bcrypt-ruby (3.0.1) 
builder (3.0.0) 
bundler (1.0.22) 
coffee-rails (3.2.2) 
coffee-script (2.2.0) 
coffee-script-source (1.2.0) 
devise (2.0.1) 
erubis (2.7.0) 
execjs (1.3.0) 
faraday (0.7.6) 
hike (1.2.1) 
i18n (0.6.0) 
journey (1.0.1) 
jquery-rails (2.0.0) 
json (1.6.5) 
mail (2.4.1) 
mime-types (1.17.2) 
multi_json (1.0.4) 
multipart-post (1.1.4) 
mysql (2.8.1) 
mysql2 (0.3.11) 
oauth (0.4.5) 
oauth-plugin (0.4.0.rc2) 
oauth2 (0.5.2) 
orm_adapter (0.0.6) 
polyglot (0.3.3) 
rack (1.4.1) 
rack-cache (1.1) 
rack-ssl (1.3.2) 
rack-test (0.6.1) 
rails (3.2.1) 
railties (3.2.1) 
rake (0.9.2.2) 
rdoc (3.12) 
rubygems-update (1.8.15) 
sass (3.1.15, 3.1.14) 
sass-rails (3.2.4) 
sprockets (2.1.2) 
sqlite3 (1.3.5) 
thor (0.14.6) 
tilt (1.3.3) 
treetop (1.4.10) 
tzinfo (0.3.31) 
uglifier (1.2.3) 
warden (1.1.0) 

回答

46

这听起来像你已经有被称为在您的用户模型中的色器件的方法。也许你已经跑了rails g devise User

评论出来,并注释掉你的路线文件中的devise_for :users行,如果那是在那里。

+0

TKS - 这似乎解决它 - 是什么问题? - 我是否按错误的顺序发出了命令,不知怎的,事情被塞满了?现在我假设我必须再次取消注释行吗? (我上面的命令是:“rails generate devise:install”,“rails generate devise User”和“rake db:migrate”。 – Greg 2012-02-12 08:48:00

+5

@greg - 运行'rails g devise:install'将初始化程序设置为文件'config/initializers/devise.rb'。这就是加载所有的设计方法,以便你的应用程序可以使用它们。如果你在初始化程序到位之前运行'rails g devise User',那么你的用户模型包含调用方法应用程序不知道,所以无论何时你运行任何rails命令,它都会失败,因为......你得到的错误。如果您尝试运行'rails server'或'rails c'或其他任何东西,它也会失败。 – declan 2012-02-12 22:40:11

+0

非常感谢这个 – cancelledout 2012-04-07 09:31:28

1

尖端对于来到这里由于以下错误的人:

User does not respond to 'devise' method. This usually means you haven't loaded your ORM file or it's being loaded too late. To fix it, be sure to require 'devise/orm/YOUR_ORM' inside 'config/initializers/devise.rb' or before your application definition in 'config/application.rb' (RuntimeError)

但是你已经有你的ORM正确初始化,也可能是创业板有关。我在旧应用程序中遇到了同样的问题,这是由于与active_reload宝石不兼容。 gem active_reload与Rails 3.2不兼容,应该删除。 active_reload已被合并到Rails 3.2中,因此可以安全地删除。

我从这里的解决方案:http://anlek.com/2012/02/user-does-not-respond-to-devise-method/

3

完成钢轨&这些问题的答案对我来说没有工作的教程,但经过一番寻找找到了解决办法。希望这可以帮助任何新的和遇到这个问题的人。

  1. 转到:的config/routes.rb中文件
  2. 注释掉devise_for :installs(把一个散列标签在前面)
  3. 转到你的Ruby终端,并重新输入:rails generate devise:install

现在设计应该正确安装&后续错误应该消失。

Source

+0

请在做这个之前备份任何配置... – simonmorley 2014-04-25 00:13:37