У меня проблемы с созданием объекта с именем 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