Sha256: 7ca3b090128f3346abb2f57b1f7b7804a4c34fa15a79e2381bd8d24632b281a7

Contents?: true

Size: 1.74 KB

Versions: 12

Compression:

Stored size: 1.74 KB

Contents

class Dhatu::BlogPost < Dhatu::ApplicationRecord

  # Set Table Name
  self.table_name = "blog_posts"

  # Including the State Machine Methods
  include Publishable
  include Featureable

  # Validations
  validates :title, presence: true, length: {minimum: 5, maximum: 256}, allow_blank: false
  validates :slug, uniqueness: true, presence: true, length: {minimum: 5, maximum: 64}, allow_blank: false
  validates :author, length: {minimum: 3, maximum: 250}, allow_blank: true
  validates :description, presence: true
  validates :posted_at, presence: true
  validates :meta_description, presence: true, length: {minimum: 10, maximum: 500}, allow_blank: false

  validates :category, presence: true
  
  # Associations
  belongs_to :category
  has_one :cover_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::CoverImage"
  has_many :gallery_images, :as => :imageable, :dependent => :destroy, :class_name => "Image::GalleryImage"

  # Serializers
  serialize :tags, Hash
  
  # ------------------
  # Class Methods
  # ------------------

  scope :search, lambda { |query| where("LOWER(title) LIKE LOWER('%#{query}%') OR\
                                        LOWER(author) LIKE LOWER('%#{query}%') OR\
                                        LOWER(description) LIKE LOWER('%#{query}%')") }

  scope :upcoming, lambda { where("starts_at >= ?", Time.now) }
  scope :past, lambda { where("starts_at < ?", Time.now) }
  
  # ------------------
  # Instance Methods
  # ------------------

  # Generic Methods
  # ---------------

  def display_name
    "#{title_was}"
  end

  # Permission Methods
  # ------------------

  def can_be_edited?
    status?(:published) or status?(:unpublished)
  end

  def can_be_deleted?
    status?(:removed)
  end
  
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
dhatu-0.1.16 app/models/dhatu/blog_post.rb
dhatu-0.1.15 app/models/dhatu/blog_post.rb
dhatu-0.1.14 app/models/dhatu/blog_post.rb
dhatu-0.1.13 app/models/dhatu/blog_post.rb
dhatu-0.1.12 app/models/dhatu/blog_post.rb
dhatu-0.1.11 app/models/dhatu/blog_post.rb
dhatu-0.1.10 app/models/dhatu/blog_post.rb
dhatu-0.1.9 app/models/dhatu/blog_post.rb
dhatu-0.1.8 app/models/dhatu/blog_post.rb
dhatu-0.1.7 app/models/dhatu/blog_post.rb
dhatu-0.1.6 app/models/dhatu/blog_post.rb
dhatu-0.1.5 app/models/dhatu/blog_post.rb