module Slugable::ActsAsSlugable::ClassMethods
Public Instance Methods
acts_as_slugable(options = {})
click to toggle source
# File lib/acts_as_slugable/acts_as_slugable_4.rb, line 10 def acts_as_slugable(options = {}) configuration = {source_column: 'name', slug_column: 'url_slug', scope: nil} configuration.update(options) if options.is_a?(Hash) configuration[:scope] = "#{configuration[:scope]}_id".intern if configuration[:scope].is_a?(Symbol) && configuration[:scope].to_s !~/_id$/ if configuration[:scope].is_a?(Symbol) scope_condition_method = %( def slug_scope_condition if #{configuration[:scope].to_s}.nil? "#{configuration[:scope].to_s} IS NULL" else "#{configuration[:scope].to_s} = \#{#{configuration[:scope].to_s}}" end end ) elsif configuration[:scope].nil? scope_condition_method = "def slug_scope_condition() \"1 = 1\" end" else scope_condition_method = "def slug_scope_condition() \"#{configuration[:scope]}\" end" end class_eval <<-EOV include Slugable::ActsAsSlugable::LocalInstanceMethods def acts_as_slugable_class ::#{self.name} end def source_column "#{configuration[:source_column]}" end def slug_column "#{configuration[:slug_column]}" end #{scope_condition_method} EOV include Slugable::ActsAsSlugable::LocalInstanceMethods end