Sha256: 7aec92188d5c748be4869b37d9e538f84034761f15d375bb408d099ad9b99fea

Contents?: true

Size: 1.66 KB

Versions: 3

Compression:

Stored size: 1.66 KB

Contents

module Devise
  module Controllers
    # Create url helpers to be used with resource/scope configuration. Acts as
    # proxies to the generated routes created by devise.
    # Resource param can be a string or symbol, a class, or an instance object.
    # Example using a :user resource:
    #
    #   new_session_path(:user)      => new_user_session_path
    #   session_path(:user)          => user_session_path
    #   destroy_session_path(:user)  => destroy_user_session_path
    #
    #   new_password_path(:user)     => new_user_password_path
    #   password_path(:user)         => user_password_path
    #   edit_password_path(:user)    => edit_user_password_path
    #
    #   new_confirmation_path(:user) => new_user_confirmation_path
    #   confirmation_path(:user)     => user_confirmation_path
    module UrlHelpers

      [:session, :password, :confirmation].each do |module_name|
        [:path, :url].each do |path_or_url|
          actions = [ nil, :new_ ]
          actions << :edit_ if module_name == :password
          actions << :destroy_ if module_name == :session

          actions.each do |action|
            class_eval <<-URL_HELPERS
              def #{action}#{module_name}_#{path_or_url}(resource, *args)
                resource = case resource
                  when Symbol, String
                    resource
                  when Class
                    resource.name.underscore
                  else
                    resource.class.name.underscore
                end

                send("#{action}\#{resource}_#{module_name}_#{path_or_url}", *args)
              end
            URL_HELPERS
          end
        end
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
devise-0.2.0 lib/devise/controllers/url_helpers.rb
devise-0.1.1 lib/devise/controllers/url_helpers.rb
devise-0.1.0 lib/devise/controllers/url_helpers.rb