lib/subdomain_routes/mapper.rb in mholling-subdomain_routes-0.1.0 vs lib/subdomain_routes/mapper.rb in mholling-subdomain_routes-0.2.0
- old
+ new
@@ -2,15 +2,17 @@
module Routing
module RouteSet
module Mapper
def subdomain(*subdomains, &block)
options = subdomains.extract_options!
- name = nil
if subdomains.empty?
- if subdomain = options.delete(:proc)
- subdomain_options = { :subdomains => { :proc => subdomain } }
- name = subdomain
+ if model = options.delete(:model)
+ raise ArgumentError, "Invalid model name" if model.blank?
+ models = model.to_s.downcase.pluralize
+ model = models.singularize
+ model_id = model.foreign_key.to_sym
+ subdomain_options = { :subdomains => model_id, :name_prefix => "#{model}_", :namespace => "#{model}/" }
else
raise ArgumentError, "Please specify at least one subdomain!"
end
else
subdomains.map!(&:to_s)
@@ -20,15 +22,15 @@
raise ArgumentError, "Illegal subdomain format: #{subdomain.inspect}" unless subdomain.blank? || SubdomainRoutes.valid_subdomain?(subdomain)
end
if subdomains.include? ""
raise ArgumentError, "Can't specify a nil subdomain unless you set Config.domain_length!" unless Config.domain_length
end
- name = subdomains.reject(&:blank?).first
subdomain_options = { :subdomains => subdomains }
+ name = subdomains.reject(&:blank?).first
+ name = options.delete(:name) if options.has_key?(:name)
+ name = name.to_s.downcase.gsub(/[^(a-z0-9)]/, ' ').squeeze(' ').strip.gsub(' ', '_') unless name.blank?
+ subdomain_options.merge! :name_prefix => "#{name}_", :namespace => "#{name}/" unless name.blank?
end
- name = options.delete(:name) if options.has_key?(:name)
- name = name.to_s.downcase.gsub(/[^(a-z0-9)]/, ' ').squeeze(' ').strip.gsub(' ', '_') unless name.blank?
- subdomain_options.merge! :name_prefix => "#{name}_", :namespace => "#{name}/" unless name.blank?
with_options(subdomain_options.merge(options), &block)
end
alias_method :subdomains, :subdomain
end
end