Следуя документации README, я установил Devise в существующее приложение Rails 3.Тем не менее, это не похоже на работу.Когда я пытаюсь получить доступ к одному из моих контроллеров с before_filter :authenticate_application_user!
, я получаю следующее сообщение об ошибке:
undefined method 'new_application_user_session_path' for #<Devise::FailureApp::0x60aldc0>
Я понятия не имею, почему.Я проверил множество, чтобы увидеть, правильно ли я следовал инструкции по установке, но безрезультатно.Поэтому мне интересно, может ли кто-нибудь простудить меня.
Вот мой routes.rb
AwesomeApp::Application.routes.draw do
devise_for :application_users
root :to => "home#index"
scope "admin" do
resources :application_users, :path => "users"
end
end
Вот мой Gemfile
:
source 'http://rubygems.org'
gem 'rails', '3.0.0'
gem 'ruby-oci8'
gem 'activerecord-oracle_enhanced-adapter'
gem 'warbler'
gem 'devise', '1.1.3'
group :development, :test do
gem 'factory_girl_rails'
gem 'forgery'
end
Здесьмой файл миграции для обновления существующей схемы базы данных:
class DeviseCreateApplicationUsers < ActiveRecord::Migration
def self.up
change_table(:application_users) do |t|
t.rememberable
t.trackable
end
end
def self.down
change_table(:application_users) do |t|
t.remove :rememberable, :trackable
end
end
end
ПРИМЕЧАНИЕ: Если кому-то интересно, я буду проходить аутентификацию с использованием LDAP.Вот почему вы не видите t.database_authenticatable
Вот моя модель application_user.rb
:
class ApplicationUser < AbstractModel
devise :rememberable, :trackable, :timeoutable
end
Вот мой devise.rb
файл инициализатора:
Devise.setup do |config|
config.mailer_sender = "please-change-me@config-initializers-devise.com"
require 'devise/orm/active_record'
config.authentication_keys = [ :user_ldap_id ]
config.stretches = 10
config.encryptor = :bcrypt
config.pepper = "SALT AND PEPPERS HERE, SALT SALT SALT"
end
ПРИМЕЧАНИЕ: Поскольку я буду проходить аутентификацию на LDAP, я использую другой столбец, отличный от столбца email
по умолчанию, для которого по умолчанию используется Devise.В результате мне пришлось установить представления Devise (rails g devise:views
) и изменить файл app/views/devise/session/new.html.erb
, чтобы использовать user_ldap_id
вместо email
.
ПРИМЕЧАНИЕ: Я удалиллюбой не относящийся к делу код из этих фрагментов.