49 lines
1.1 KiB
Ruby
49 lines
1.1 KiB
Ruby
|
module Devise
|
||
|
module Orm
|
||
|
module MongoMapper
|
||
|
module Hook
|
||
|
def devise_modules_hook!
|
||
|
extend Schema
|
||
|
include Compatibility
|
||
|
yield
|
||
|
return unless Devise.apply_schema
|
||
|
devise_modules.each { |m| send(m) if respond_to?(m, true) }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
module Schema
|
||
|
include Devise::Schema
|
||
|
|
||
|
# Tell how to apply schema methods. This automatically converts DateTime
|
||
|
# to Time, since MongoMapper does not recognize the former.
|
||
|
def apply_schema(name, type, options={})
|
||
|
type = Time if type == DateTime
|
||
|
key name, type, options
|
||
|
end
|
||
|
end
|
||
|
|
||
|
module Compatibility
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
module ClassMethods
|
||
|
def find(*args)
|
||
|
case args.first
|
||
|
when :first, :all
|
||
|
send(args.shift, *args)
|
||
|
else
|
||
|
super
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
[MongoMapper::Document, MongoMapper::EmbeddedDocument].each do |mod|
|
||
|
mod::ClassMethods.class_eval do
|
||
|
include Devise::Models
|
||
|
include Devise::Orm::MongoMapper::Hook
|
||
|
end
|
||
|
end
|