Sha256: 7b86d84acb128f76f280ab01bf05565762b8b9132064d72eae1f5787c8db07c3

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

require "dynamic_router/version"

module DynamicRouter
  module_function
    def has_dynamic_route_for(klass, url, target, options = {})
      route_method = options[:method] || :get
      
      if ActiveRecord::Base.connection.table_exists? klass.table_name
        Rails.application.routes.draw do
          klass.find_each do |model|
            unless options[:defaults].blank?
              defaults = {}
              
              options[:defaults].each do |key, value|
                defaults[key.to_sym] = value.call(model)
              end  
            end
            
            _url = url.call(model).to_s
            _target = target.to_s
            
            unless _url.blank? || _url.gsub(/\//, "").blank?
              #puts "Routing #{route_method.to_s.upcase} #{_url}, to #{target}, defaults : #{defaults}"
              send(route_method, _url, :to => _target, :defaults => defaults)
            end
          end   
        end
      end
      
      klass.class_eval do
        after_save :create_route
        
        def create_route
          Rails.application.routes_reloader.reload!
        end
      end
    end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dynamic_router-0.0.9 lib/dynamic_router.rb
dynamic_router-0.0.7 lib/dynamic_router.rb
dynamic_router-0.0.4 lib/dynamic_router.rb