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(/&amp;/,         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

Version Path
homesteading_publisher-0.1.2 app/models/homesteading/post.rb
homesteading_publisher-0.1.1 app/models/homesteading/post.rb
homesteading_publisher-0.1.0 app/models/homesteading/post.rb
homesteading_publisher-0.0.11 app/models/homesteading/post.rb
homesteading_publisher-0.0.10 app/models/homesteading/post.rb
homesteading_publisher-0.0.9 app/models/homesteading/post.rb
homesteading_publisher-0.0.8 app/models/homesteading/post.rb
homesteading_publisher-0.0.7 app/models/homesteading/post.rb
homesteading_publisher-0.0.6 app/models/homesteading/post.rb
homesteading_post-0.0.5 app/models/homesteading/post.rb