Sha256: 87beb5e54c8f6574c2a8d52babf5b45116d1ec216d66f5cf0fbec851898699d0
Contents?: true
Size: 1.65 KB
Versions: 10
Compression:
Stored size: 1.65 KB
Contents
module Homesteading class Post < ActiveRecord::Base default_scope { order("published_at desc") } validates :published_at, :year, :month, :day, :hour, :minute, :second, :slug, presence:true, unless: :new_record? before_create :set_published_at_attrs, :set_slug before_update :set_published_at_attrs, :set_slug self.abstract_class = true def path post_type = Setting.where(name: "Post Type").first.content.downcase.pluralize "/" + [post_type, year.to_s.rjust(2, "0"), month.rjust(2, "0"), day.rjust(2, "0"), slug].compact.join("/") end def params { year: year, month: month, day: day, slug: slug } end def public? !self.private? end def name [title, subtitle].compact.join(" : ") end private def set_published_at_attrs self.published_at ||= Time.zone.now self.year = published_at.year self.month = published_at.month.to_s.rjust(2, "0") self.day = published_at.day.to_s.rjust( 2, "0") self.hour = published_at.hour.to_s.rjust( 2, "0") self.minute = published_at.min.to_s.rjust( 2, "0") self.second = published_at.sec.to_s.rjust( 2, "0") end def set_slug blank = "" separator = "-" self.slug ||= "#{name || content}" self.slug = slug.downcase. gsub(/\(|\)|\[|\]\./, blank). gsub(/&/, blank). gsub(/\W+/, separator). gsub(/_+/, separator). gsub(/ +/, separator). gsub(/-+/, separator). gsub(/^-+/, blank). gsub(/-+$/, blank) end end end
Version data entries
10 entries across 10 versions & 2 rubygems