module Acts::Slugoid::ClassMethods
Public Class Methods
acts_as_slugoid_options()
click to toggle source
# File lib/slugoid/acts/slugoid.rb, line 38 def self.acts_as_slugoid_options @acts_as_slugoid_options end
find_by_slug(slug)
click to toggle source
# File lib/slugoid/acts/slugoid.rb, line 42 def self.find_by_slug(slug) where(@acts_as_slugoid_options[:store_as] => slug).first end
Public Instance Methods
acts_as_slugoid(options = {})
click to toggle source
Adds the logic to generate the slug
Options:
:generate_from The name of the field used to generate the slug :store_as The name of the field where the slug will be stored
# File lib/slugoid/acts/slugoid.rb, line 18 def acts_as_slugoid(options = {}) @acts_as_slugoid_options = { :generate_from => :name, :store_as => :slug }.merge(options) generate_from = @acts_as_slugoid_options[:generate_from] store_as = @acts_as_slugoid_options[:store_as] class_eval do before_save do generate_slug(generate_from, store_as) end field(store_as, :type => String) unless self.respond_to?(store_as) index(store_as) alias_method :to_param!, :to_param include InstanceMethods def self.acts_as_slugoid_options @acts_as_slugoid_options end def self.find_by_slug(slug) where(@acts_as_slugoid_options[:store_as] => slug).first end end define_method("to_param") do self.send(store_as) end end