Sha256: ae68865a26f3093ddc0a748e31705c9ae27ec999cc6d4513a3250479e6dee950

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

module Effective
  class Post < ActiveRecord::Base
    acts_as_role_restricted if defined?(EffectiveRoles)
    acts_as_regionable if defined?(EffectiveRegions)

    self.table_name = EffectivePosts.posts_table_name.to_s

    belongs_to :user

    structure do
      title             :string, :validates => [:presence]
      category          :string, :validates => [:presence]

      published_at      :datetime, :validates => [:presence]

      draft             :boolean, :default => false

      tags              :text

      roles_mask        :integer, :default => 0

      timestamps
    end

    scope :drafts, -> { where(:draft => true) }
    scope :published, -> { where(:draft => false).where("#{EffectivePosts.posts_table_name}.published_at < ?", Time.zone.now) }
    scope :with_category, proc { |category| where(:category => category.to_s.downcase) }

    def to_param
      "#{id}-#{title.parameterize}"
    end

    # 3.333 words/second is the default reading speed.
    def time_to_read_in_seconds(reading_speed = 3.333)
      (regions.to_a.sum { |region| (region.content || '').scan(/\w+/).size } / reading_speed).seconds
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
effective_posts-0.2.4 app/models/effective/post.rb
effective_posts-0.2.3 app/models/effective/post.rb
effective_posts-0.2.2 app/models/effective/post.rb