Sha256: b14456d9b01e5fff27dc10eea8e3a9883d106e92af918311c123c398f0192287

Contents?: true

Size: 1.64 KB

Versions: 9

Compression:

Stored size: 1.64 KB

Contents

module Pulitzer
  class Post < ActiveRecord::Base
    include ForeignOffice::Broadcaster if defined? ForeignOffice
    extend ::FriendlyId
    has_many :versions
    has_one :active_version, -> { active }, class_name: "Pulitzer::Version"

    belongs_to :post_type
    delegate :post_type_content_element_types, :free_form_section_types, :has_free_form_sections?, :has_templated_content_elements?, to: :post_type
    delegate :content_elements, :section, :has_label_type, :has_label, :post_tags_for, to: :active_version, allow_nil: true

    has_many :post_tags, through: :active_version

    friendly_id :title, use: [:slugged, :finders]
    after_create :create_preview_version

    attr_accessor :new_preview_version

    validates :title, presence: true

    TAG_MODELS = ["Pulitzer::Tag"] + Pulitzer.tagging_models

    def tags
      post_tags.map(&:label)
    end

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

    def should_generate_new_friendly_id?
      new_record? || title_changed?
    end

    def preview_version
    	versions.preview.last
    end

    def processing_version
      versions.processing.last
    end

    def processing_failed_version
      versions.processing_failed.last
    end

    def next_version
      preview_version || processing_version || processing_failed_version
    end

    def create_preview_version
      versions.create(status: :preview)
    end

    def create_processing_version
      versions.create(status: :processing)
    end

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

Version data entries

9 entries across 9 versions & 1 rubygems

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