Sha256: 079500cb3cd32d199bf421e02194477cbc4a74cd9423516e75b1fb47b8aa1809

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

require "redcarpet"

module BitPlayer
  class Slide < ActiveRecord::Base
    belongs_to :slideshow,
      class_name: "BitPlayer::Slideshow",
      foreign_key: :bit_player_slideshow_id,
      inverse_of: :slides

    validates :title, :body, :position, presence: true
    validates_numericality_of :position, greater_than_or_equal_to: 1
    validates_uniqueness_of :position, scope: :bit_player_slideshow_id

    def render_body
      rendered = ""

      if !body.nil?
        markdown = Redcarpet::Markdown.new(
          Redcarpet::Render::HTML.new(
            filter_html: true,
            safe_links_only: true
          ),
          space_after_headers: true,
        )
        rendered += markdown.render(body)
      end

      rendered.html_safe
    end

    def self.update_positions(ids)
      transaction do
        connection.execute "SET CONSTRAINTS slide_position DEFERRED"
        ids.each_with_index do |id, index|
          where(id: id).update_all(position: index + 1)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bit_player-0.1.3 app/models/bit_player/slide.rb