【发布时间】:2015-01-21 01:10:20
【问题描述】:
我是 Rails 的新手,我正在尝试使用“设计”构建用户身份验证系统,但我失败了。我正在关注 Rails Girls Guides 的 tutorial 使用 gem 'devise' 添加身份验证。一旦我进入第 5 步,即设置用户模型,我在运行 rake db:migrate 后收到此错误@
rake aborted!
NoMethodError: undefined method `merge!' for #<ActionDispatch::Routing::Mapper::Scope:0x007fd3397a7448>
/Users/.rvm/gems/ruby-2.1.2/gems/devise-3.0.4/lib/devise/rails/routes.rb:420:in `ensure in with_devise_exclusive_scope'
/Users/.rvm/gems/ruby-2.1.2/gems/devise-3.0.4/lib/devise/rails/routes.rb:420:in `with_devise_exclusive_scope'
/Users/.rvm/gems/ruby-2.1.2/gems/devise-3.0.4/lib/devise/rails/routes.rb:233:in `block (2 levels) in devise_for'
/Users/.rvm/gems/ruby-2.1.2/gems/devise-3.0.4/lib/devise/rails/routes.rb:336:in `block in devise_scope'
有人解决了这个错误吗?我查看了所有解决方案,例如not generating user model before installing devise、running bundle install、running rails g devise:install 等等。当我尝试将设计用于 Rails 4.0 时,到目前为止没有任何效果。
另外,有人对我可以遵循哪些教程来构建身份验证系统有建议吗?到目前为止,我已经尝试了很多,但都没有成功。
【问题讨论】:
-
请
rails -v检查您使用的是rails 4.0 还是4.2。这看起来只是影响 Rails 4.2,如此处所示github.com/plataformatec/devise/issues/3158 -
我的版本是4.2,所以我相信你的怀疑是正确的。如何更改我的 rails 版本?
-
这个问题恰好在设计上已经修复。你能检查一下你使用的是什么版本的设备吗?你可以运行它来检查它
bundle list | grep devise -
我正在使用设计 3.4.1
-
不,你不是。我刚刚意识到设计版本在您发布的错误回溯中:)
ruby-2.1.2/gems/devise-3.0.4
标签: ruby-on-rails ruby ruby-on-rails-4 devise ruby-on-rails-4.2