user_signed_in?вызывает неинициализированную постоянную ошибку с Mongoid / Devise - PullRequest
2 голосов
/ 20 ноября 2011

Вчера у меня были некоторые проблемы с другим ODM, поэтому я решил вместо этого взглянуть на Mongoid. wiki tutorial был довольно тщательным, так что казалось, что оно того стоило.Я внимательно прочитал статью в вики, но, возможно, что-то пропустил.Возможно, это происходит потому, что у меня вчера был другой ODM в приложении.В любом случае, теперь я получаю сообщение об ошибке:

uninitialized constant User::Mongoid

с этой строкой кода (добавили это, чтобы подтвердить, что это был метод, который был проблемой):

<% if user_signed_in? -%>
5:     Hello user
6:     <% end -%>

user_signed_in - это метод Devise.Я подозреваю, что Devise на самом деле не загружается, но я не уверен, что делать дальше.

В моем файле gem есть gem "devise", "1.5.0", и я запустил bundler install, я вижу, что устройство устанавливается.Я подтвердил, что мой контроллер приложения точно соответствует контроллеру приложения в образце.Мое приложение запускается без проблем, когда я запускаю rails server.Все модели в приложении загружаются правильно, когда я load 'app/models/user.rb'.Файл config / initializers / devise.rb имеет require 'devise/orm/mongoid'.Я проверил, что моя модель пользователя точно соответствует модели в учебнике.

Что мне смотреть дальше?

Обновление : это было исправлено, но я "м до сих пор не хватает как.Я запустил приложение на новый порт.Это все, что нужно.Я вносил изменения в свой index.html.erb и видел эти изменения в ошибке, которую я получал, чтобы я знал, что новый код просматривается.Но когда я запустил приложение на новом порту, ошибка исчезла.Возможно, в рельсах есть какая-то «жесткая перекомпиляция», о которой я не знаю?

1 Ответ

1 голос
/ 20 ноября 2011

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

Я предполагаю, что в модели User у вас есть что-то вроде этого:

class User
  include Mongoid::Document

  devise :database_authenticatable, ...
end

Проверьте в config / initializers / devise.rb:

  # ==> ORM configuration
  # Load and configure the ORM. Supports :active_record (default) and
  # :mongoid (bson_ext recommended) by default. Other ORMs may be
  # available as additional gems.
  require 'devise/orm/mongoid'

Также проверьтеПридумайте самоцвет под mongoid самоцветом в Gemfile:

gem "mongoid", "~> 2.3.2"
gem "bson_ext"
gem "devise", "~> 1.4.9"
...