Module: SaltySlugs::ActiveRecord::SlugMethods
- Defined in:
- lib/salty_slugs/active_record.rb
Defined Under Namespace
Modules: ClassMethods, Columns, InstanceMethods
Instance Method Summary collapse
-
#has_slug(options = {}) ⇒ Object
Configuration options are: :slug_column - column for save slug :source_column - source column for generate slug :prepend_id - method to_param return ‘:id-:slug’ or ‘:slug’ :sync_slug - regenerate slug on record update :scope - for validation.
Instance Method Details
#has_slug(options = {}) ⇒ Object
Configuration options are:
:slug_column - column for save slug
:source_column - source column for generate slug
:prepend_id - method to_param return ':id-:slug' or ':slug'
:sync_slug - regenerate slug on record update
:scope - for validation
Usage: class Post < ActiveRecord::Base
has_slug :slug_column => 'permalink', :source_column => 'name'
end
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/salty_slugs/active_record.rb', line 21 def has_slug( = {}) unless included_modules.include? InstanceMethods extend ClassMethods extend Columns include InstanceMethods include Columns end = { :slug_column => 'slug', :source_column => 'title', :prepend_id => true, :sync_slug => false, :scope => nil }.merge() if [:scope].is_a?(Symbol) && [:scope].to_s !~ /_id$/ [:scope] = "#{[:scope]}_id".intern end write_inheritable_attribute :salty_slugs_options, class_inheritable_reader :salty_slugs_options unless slug_prepend_id slug_scope_fields ? (validates_uniqueness_of slug_column, :scope => slug_scope_fields) : (validates_uniqueness_of slug_column) end before_validation { |record| record[slug_column] = (sync_slug || record[slug_column].blank?) ? SaltySlugs::Utils.sluggify(record.send(slug_source_column)) : SaltySlugs::Utils.sluggify(record[slug_column]) } end |