2

我对 Rails 很陌生,我正在尝试使用“设计”构建用户身份验证系统,但我失败了。我正在关注 Rails Girls Guides 关于使用 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'

有没有人解决这个错误?我查看了所有解决方案,例如在安装 devise 之前不生成用户模型运行 bundle install运行 rails g devise:install等等。当我尝试将设计用于 Rails 4.0 时,到目前为止没有任何效果。

另外,有人对我可以遵循哪些教程来构建身份验证系统有建议吗?到目前为止,我已经尝试了很多,但都没有奏效。

4

1 回答 1

3

这看起来是以前 3.4.0 设计的已知错误。

升级它应该会使这个错误消失。

为此,请编辑您Gemfile拥有的位置gem "devise" <might have some other stuff in front>并将其更改为gem "devise", '~> 3.4.1'

然后运行bundle update devise,你就完成了。

于 2015-01-21T01:36:01.967 回答