module SimpleSlug::ModelAddition::SingletonMethods
Public Instance Methods
simple_slug(*args)
click to toggle source
# File lib/simple_slug/model_addition.rb, line 8 def simple_slug(*args) class_attribute :simple_slug_options, :simple_slug_adapter, instance_writer: false options = args.extract_options! self.simple_slug_options = options.reverse_merge( slug_column: SimpleSlug.slug_column, slug_method: args, slug_regexp: SimpleSlug.slug_regexp, min_length: SimpleSlug.min_length, max_length: SimpleSlug.max_length, callback_type: SimpleSlug.callback_type, validation: SimpleSlug.validation ) self.simple_slug_adapter = SimpleSlug::Adapter.new(self) include InstanceMethods extend ClassMethods send(simple_slug_options[:callback_type], :simple_slug_generate, if: :should_generate_new_slug?) if simple_slug_options[:callback_type] if simple_slug_options[:validation] validates *simple_slug_adapter.column_names, presence: true, uniqueness: {case_sensitive: true}, exclusion: {in: SimpleSlug.excludes}, format: {with: simple_slug_options[:slug_regexp]}, length: {minimum: simple_slug_options[:min_length], maximum: simple_slug_options[:max_length]}.reject{|_, v| v.blank? } end if simple_slug_options[:history] after_save :simple_slug_reset, :simple_slug_save_history after_destroy :simple_slug_cleanup_history include InstanceHistoryMethods end end