Make it easier to find by slug or id for sluggable models. It will raise a 404 HTML Not found error if the resource is not found.
20 lines
413 B
Ruby
20 lines
413 B
Ruby
module Sluggable
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
before_validation :generate_slug, if: :generate_slug?
|
|
|
|
def self.find_by_slug_or_id(slug_or_id)
|
|
find_by_slug(slug_or_id) || find_by_id(slug_or_id)
|
|
end
|
|
|
|
def self.find_by_slug_or_id!(slug_or_id)
|
|
find_by_slug(slug_or_id) || find(slug_or_id)
|
|
end
|
|
end
|
|
|
|
def generate_slug
|
|
self.slug = name.to_s.parameterize
|
|
end
|
|
end
|