Object
# File lib/stringex/acts_as_url.rb, line 11 def initialize(klass, options = {}) self.allow_slash = options[:allow_slash] self.allow_duplicates = options[:allow_duplicates] self.attribute_to_urlify = options[:attribute] self.duplicate_count_separator = options[:duplicate_count_separator] || "-" self.exclude = options[:exclude] || [] self.only_when_blank = options[:only_when_blank] self.scope_for_url = options[:scope] self.sync_url = options[:sync_url] self.url_attribute = options[:url_attribute] || "url" self.url_limit = options[:limit] end
# File lib/stringex/acts_as_url.rb, line 24 def get_base_url!(instance) base_url = instance.send(url_attribute) if base_url.blank? || !only_when_blank root = instance.send(attribute_to_urlify).to_s base_url = root.to_url(:allow_slash => allow_slash, :limit => url_limit, :exclude => exclude) end instance.instance_variable_set "@acts_as_url_base_url", base_url end
# File lib/stringex/acts_as_url.rb, line 33 def get_conditions!(instance) conditions = ["#{url_attribute} LIKE ?", instance.instance_variable_get("@acts_as_url_base_url") + '%'] unless instance.new_record? conditions.first << " and id != ?" conditions << instance.id end if scope_for_url conditions.first << " and #{scope_for_url} = ?" conditions << instance.send(scope_for_url) end conditions end
# File lib/stringex/acts_as_url.rb, line 46 def handle_duplicate_urls!(instance) return if allow_duplicates base_url = instance.instance_variable_get("@acts_as_url_base_url") url_owners = instance.class.unscoped.find(:all, :conditions => get_conditions!(instance)) if url_owners.any?{|owner| owner.send(url_attribute) == base_url} separator = duplicate_count_separator n = 1 while url_owners.any?{|owner| owner.send(url_attribute) == "#{base_url}#{separator}#{n}"} n = n.succ end instance.send :write_attribute, url_attribute, "#{base_url}#{separator}#{n}" end end
Generated with the Darkfish Rdoc Generator 2.