Skip to content

Instantly share code, notes, and snippets.

@qoobaa
Created September 29, 2010 14:18
Show Gist options
  • Save qoobaa/602814 to your computer and use it in GitHub Desktop.
Save qoobaa/602814 to your computer and use it in GitHub Desktop.
Devise::ALL.dup.each do |name|
class_name = name.to_s.classify
to_class = WebsiteAccount
to_instance = :website_account
class_eval <<-METHODS, __FILE__, __LINE__ + 1
module Devise::Models::Delegated#{class_name}
extend ActiveSupport::Concern
included do
singleton_class.delegate *(Devise::Models::#{class_name}::ClassMethods.instance_methods), :to => #{to_class} if defined?(Devise::Models::#{class_name}::ClassMethods)
delegate *Devise::Models::#{class_name}.instance_methods, :to => :#{to_instance}
delegate *Devise::Models::#{class_name}::InstanceMethods.instance_methods, :to => :#{to_instance} if defined?(Devise::Models::#{class_name}::InstanceMethods)
#{to_class}.send(:include, Devise::Models::#{class_name})
end
end
Devise.add_module(:delegated_#{name}, :model => true, :strategy => Devise::STRATEGIES[:#{name}], :controller => Devise::CONTROLLERS[:#{name}], :route => Devise::ROUTES[:#{name}])
METHODS
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment