Sha256: b52c040b7e3ee4db1e39d384ba7ee7df40dfd378e0030f00db782ea21ef9b9ba

Contents?: true

Size: 1.1 KB

Versions: 6

Compression:

Stored size: 1.1 KB

Contents

# encoding: UTF-8
class Character::Post
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Slug
  include Mongoid::Search
  include UpdatedAgo
  include Hideable

  # attributes
  field :title,     default: ''
  field :subtitle,  default: ''
  field :body_html, default: ''

  field :featured_image, type: Hash, default: { 'url' => '' }
  field :published_at,   type: DateTime, default: -> { DateTime.now }

  # relations
  belongs_to :category, class_name: "Character::PostCategory"
  belongs_to :author,   class_name: "Character::PostAuthor"

  # slugs and search
  slug      :title, history: true
  search_in :title, :body_html, :category => :title

  # scopes
  default_scope     -> { order_by(published_at: :desc) }
  scope :published, -> { where(hidden: false).lte(published_at: DateTime.now) }
  scope :scheduled, -> { where(hidden: false).gt(published_at: DateTime.now) }
  scope :drafts,    -> { where(hidden: true) }

  # indexes
  index({ slug: 1 })
  index({ hidden: 1, published_at: -1 })

  # helpers
  def featured_image_url
    featured_image ? featured_image['url'] : ''
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
character-1.0.5 app/models/character/post.rb
character-1.0.4 app/models/character/post.rb
character-1.0.3 app/models/character/post.rb
character-1.0.2 app/models/character/post.rb
character-1.0.1 app/models/character/post.rb
character-1.0.0 app/models/character/post.rb