【问题标题】:Devise with Mongodb won't recognize authenticate_person?使用 Mongodb 设计不会识别 authenticate_person?
【发布时间】:2011-10-20 03:40:46
【问题描述】:

除了项目模板中给出的用户对象之外,我在创建一个名为 person 的对象时遇到问题:https://github.com/RailsApps/rails3-mongoid-devise/tree/master/script

devise-mongoid 组合真的不喜欢我创建的 person 对象。当我使用以下行尝试注销此人时:

  • :delete %>

  • devise 给我以下错误:

    Mongoid::Errors::DocumentNotFound in PeopleController#show

    找不到具有 id(s) sign_out 的类 Person 的文档。

    Rails.root:/home/jyj/rubys/rails3-mongoid-devise

    所以我认为它会将 sign_out 与某些人的 id 混淆。

    我 grep 了项目文件夹中的所有用户实例,并为 person 对象模仿了所有实例。我还创建了自己的登录、注册页面,而不是直接使用 view/devise 文件夹中的页面。但我最初在签出 person 对象时遇到了很多麻烦。后来我发现我需要在我的 application.html.erb 文件中包含这个 javascript 标签:

     <%#= csrf_meta_tag %>
      <%= javascript_include_tag :defaults %>
    

    请注意,我之前必须注释掉其他元标记,以便系统识别 javascript 标记,我不太明白。我还不得不在 config/initialize/devise.rb 文件中更改一行,即,

    # config.sign_out_via = Rails.env.test? ? :get : :delete
     config.sign_out_via = :delete
    

    我发现(也许)User 和 Person 之间的差异是由于 User 的测试是在 factory_girl 中初始化的,而不是 Person。所以我在这方面也让 Person 看起来和 User 一样。但是看到不行后,我只是把上面的第一行注释掉了,简单的把sign_out方法设置为:delete。

    但现在我的问题变成了系统无法识别行 authenticate_person!在我的 peoplecontroller.rb 文件中:

    class PeopleController < ApplicationController
      before_filter :authenticate_person!
    
      def show
        @person = Person.find(params[:id])
    
      end
    
    end
    

    非常感谢您的帮助!任何附加代码均可应要求提供。这是我放入 javascript 标记、删除元标记并强制 sign_out 方法为 :delete 后的错误消息:

    PeopleController#show 中的 NoMethodError

    未定义的方法 `authenticate_person!'对于

    Rails.root:/home/jyj/rubys/rails3-mongoid-devise

    【问题讨论】:

      标签: ruby-on-rails mongodb devise mongoid


      【解决方案1】:

      虽然我不知道无法识别的 authenticate_person 发生了什么,但我确实设法让 sign_out 工作。诀窍是在 route.rb 中添加以下覆盖行:

      devise_for :人做 得到'sign_out' => '设计/会话#sign_out' 结束

      显然,除了用户本身之外,没有办法让设计识别新的用户类别!对于为什么会这样,我仍然很感激。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多