Разработать с Mongodb не узнает authenticate_person - PullRequest
0 голосов
/ 20 октября 2011

У меня проблемы с созданием объекта с именем person в дополнение к пользовательскому объекту, указанному здесь в шаблоне проекта: https://github.com/RailsApps/rails3-mongoid-devise/tree/master/script

Комбо devise-mongoid действительно не нравится объект person, который я создал. Когда я использую следующую строку, чтобы попытаться выйти из этого человека:

<% = link_to 'Выйти', destroy_person_session_path,: method =>: удалить%>

devise дает мне следующую ошибку:

Mongoid :: Ошибки :: DocumentNotFound в PeopleController # show

Документ не найден для класса Person с идентификатором (ами). Sign_out.

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

Так что я думаю, что это путает sign_out с идентификатором какого-то человека.

Я собрал все экземпляры пользователя в папке проекта и имитировал их все для объекта person. Я также создал свой собственный вход в систему, регистрировал страницы, вместо того, чтобы напрямую использовать их в папке view / devise. Но у меня изначально было много проблем с выписыванием объекта person. Позже я узнал, что мне нужно включить этот тег javascript в мой файл application.html.erb:

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

Заметьте, я должен был закомментировать другой метатег прежде, чтобы система распознала тег javascript, который я не совсем понимаю. Также мне пришлось изменить строку в файле config / intialize / devise.rb, а именно

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

Я выяснил (возможно), что разница здесь между Пользователем и Лицом была вызвана тем фактом, что тест для Пользователя был инициализирован в factory_girl, а не в Персоне. Поэтому я сделал так, чтобы Person выглядел так же, как и пользователь, в этом отношении. Но увидев, что это не сработало, я просто закомментировал первую строчку выше и просто установил для метода 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:

NoMethodError в PeopleController # show

неопределенный метод `authenticate_person! ' для

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

1 Ответ

0 голосов
/ 23 октября 2011

Хотя я не знал, что случилось с неизвестным authenticate_person, мне удалось заставить sign_out работать.Хитрость заключается в том, чтобы добавить следующую переопределенную строку в route.rb:

devise_for: person действительно получить 'sign_out' => 'devise / session # sign_out' end

Так что, очевидно, нет никакого способачтобы заставить устройство распознавать новую категорию пользователей, кроме самого пользователя!Я все равно буду признателен за помощь в этом.

...