module Slugable::ActsAsSlugable
Public Instance Methods
acts_as_slugable(options = {})
click to toggle source
# File lib/acts_as_slugable/acts_as_slugable_5.rb, line 6 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 #{scope_condition_method} EOV define_method :acts_as_slugable_class do self.class end define_method :source_column do "#{configuration[:source_column]}" end define_method :slug_column do "#{configuration[:slug_column]}" end include Slugable::ActsAsSlugable::LocalInstanceMethods after_validation :create_slug end