Sha256: 96d50f3ceb906d41a483d474c8ee6229f01a084bbd571d1ae44435fcfe494f4b

Contents?: true

Size: 1.79 KB

Versions: 9

Compression:

Stored size: 1.79 KB

Contents

module Pulitzer
  class Version < ActiveRecord::Base
    include ForeignOffice::Broadcaster if defined? ForeignOffice
    enum status: [ :preview, :active, :archived, :abandoned, :processing, :processing_failed ]
    has_many :content_elements, dependent: :destroy
    has_many :free_form_sections, dependent: :destroy
    has_many :post_tags, dependent: :destroy
    has_many :tags, through: :post_tags, source: :label, source_type: "Pulitzer::Tag"
    belongs_to :post
    scope :tagged_with_type, ->(label_type){includes(:post_tags).where(pulitzer_post_tags: {label_type: label_type}).references(:pulitzer_post_tags)}
    scope :tagged_with_label, ->(label){includes(:post_tags).where(pulitzer_post_tags:{label_type: label.class.name, label_id: label.id}).references(:pulitzer_post_tags)}
    attr_accessor :processed_element_count

    delegate :has_free_form_sections?, :has_templated_content_elements?, :title, :slug, :active_version, to: :post

    validates :post_id, :status, presence: true

    def has_label_type(label_type)
      post_tags.where(label_type: label_type).any?
    end

    def has_label(label)
      post_tags.where(label_type: label.class.name, label_id: label.id).any?
    end

    def post_tags_for(label_type)
      post_tags.where(label_type: label_type)
    end

    def content_element(label)
      self.content_elements.find_by(label: label)
    end

    def section(name)
      self.free_form_sections.find_by(name: name)
    end

    def template_content_elements
      content_elements.template
    end

    def total_processing_elements
      active_version.content_elements.count + active_version.post_tags.count + active_version.free_form_sections.count + 2
    end

    def serialize
      self.attributes.merge \
        processed_element_count: self.processed_element_count
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
pulitzer-0.4.16 app/models/pulitzer/version.rb
pulitzer-0.4.15 app/models/pulitzer/version.rb
pulitzer-0.4.14 app/models/pulitzer/version.rb
pulitzer-0.4.13 app/models/pulitzer/version.rb
pulitzer-0.4.12 app/models/pulitzer/version.rb
pulitzer-0.4.11 app/models/pulitzer/version.rb
pulitzer-0.4.9 app/models/pulitzer/version.rb
pulitzer-0.4.8 app/models/pulitzer/version.rb
pulitzer-0.4.7 app/models/pulitzer/version.rb