【问题标题】:Problems with Rails Girls Guides's Adding Authentication with DeviseRails Girls Guides 使用 Devise 添加身份验证的问题
【发布时间】: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 deviserunning bundle installrunning 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


【解决方案1】:

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

升级它应该可以消除这个错误。

要做到这一点,请编辑您的 Gemfile gem "devise" &lt;might have some other stuff in front&gt; 并将其更改为 gem "devise", '~&gt; 3.4.1'

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

【讨论】:

    猜你喜欢
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多