Sha256: fd8e5392722dd9799c556b550103234b171ae952d9ecdad02e66f88280c88ca0

Contents?: true

Size: 1016 Bytes

Versions: 2

Compression:

Stored size: 1016 Bytes

Contents

class Post < ActiveRecord::Base
  SECTION_DELIMITER = '<!--ej:section-->'
  
  has_many                :comments, :dependent => true
  has_many                :pings,    :dependent => true
  belongs_to              :user
  has_and_belongs_to_many :tags
  
  validates_presence_of :subject, :body, :user_id

  # The updated_on time stamp is always updated to now.
  def before_save
    self.subject = CGI.escapeElement(self.subject, 'script')
    self.body    = CGI.escapeElement(self.body, 'script')

    @sections = self.body.split(/^----\s*$/).map! do |section|
      RedCloth.new(section).to_html.gsub(/\t/, '')
    end
    self.rendered = @sections.join(SECTION_DELIMITER)

    self.slug = self.subject.downcase.gsub(/[^a-z0-9 _-]+/, '').gsub(/ +/, '-').gsub(/-+/, '-')
  end

  def updated?
    self.created_at.strftime('%Y%m%d%H%M%S') != self.updated_at.strftime('%Y%m%d%H%M%S')
  end

  def sections
    return @sections.dup if @sections
    (@sections = self.rendered.split(SECTION_DELIMITER)).dup
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
EliteJournal-1.9.492 app/models/post.rb
EliteJournal-1.9.480 app/models/post.rb