W routingu devisa (a dokładnie chodzi mi o devise_for) znalazłem poważne uproszczenie które mocno ogranicza devisa. Uproszczenie to polega na podpięciu do routingu konkretnego zasobu, a przecież routing kieruhe akcję do kontrolera a nie do modelu. Chciałem w aplikacji zrealizować coś takiego:
[code=ruby]class User
…
end
class Db::Ar::User < ActiveRecord::Base
self.table_name = ‘users’
Include default devise modules. Others available are:
:token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:encryptable, :confirmable, :lockable, :token_authenticatable
Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end
class mm::User
…
end[/code]
dwa ostatnie modele byłyby w pewien sposób połączone z User, i User kierowałby operacje zapisu czy to przez ActiveRecord czy to przez MongoMapper (ew. Mongoid). Niestety w routingu nie mogę wpisać:
devise_for :user
ponieważ zwraca błąd
User does not respond to 'devise' method. This usually means you haven't loaded your ORM file or it's being loaded too late. To fix it, be sure to require 'devise/orm/YOUR_ORM' inside 'config/initializers/devise.rb' or before your application definition in 'config/application.rb'
Czy jest jakaś metoda, żeby wykorzystać mechanizmy devisa, ale za zasób uznać model User a nie ar::User ?