Sha256: ca544c3d59b7a5c9f873b790c1dc79b30dabc28d49054bc4bde8814953d3d340

Contents?: true

Size: 698 Bytes

Versions: 1

Compression:

Stored size: 698 Bytes

Contents

class Models::Item
  attr_writer :slug
  def slug
    @slug ||= generate_slug
  end
  before_create :slug
  assign :slug, String, true

  rad.extension :item_slug, self do
    validates_uniqueness_of :slug
  end

  validates_format_of :slug, with: /^[0-9a-z\-]+$/
  validates_presence_of :slug

  def self.by_param! param
    by_param(param) || raise(Mongo::NotFound, "object with slug #{param} not found!")
  end

  def self.by_param param
    self.by_slug(param) || (BSON::ObjectId.legal?(param) && self.by_id(param))
  end

  protected
    def generate_slug
      "#{name.blank? ? String.random(6) : name.to_url[0..50]}-#{String.random}" #UUIDTools::UUID.random_create.hexdigest[0,6]
    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rad_kit-0.0.10 app/models/_item/slug.rb