Sha256: d35d1b0be40257fb3c7be2efff5b221b1fdf29800122e419d7cbafc3f35f5b6e

Contents?: true

Size: 1.57 KB

Versions: 5

Compression:

Stored size: 1.57 KB

Contents

class Ecm::Sliders::Slider < ActiveRecord::Base
  self.table_name = 'ecm_sliders_sliders'

  # associations
  has_many :ecm_sliders_items,
           :class_name => Ecm::Sliders::Item,
           :dependent => :destroy,
           :foreign_key => :ecm_sliders_slider_id,
           :order => 'position',
           :inverse_of => :ecm_sliders_slider

  # attributes
  attr_accessible :auto_start,
                  :description,
                  :ecm_sliders_items_attributes,
                  :ecm_sliders_items_count,
                  :identifier,
                  :interval,
                  :locale,
                  :name,
                  :slug

  accepts_nested_attributes_for :ecm_sliders_items, :allow_destroy => true

  # callbacks
  after_initialize :set_defaults

  # friendly id
  extend FriendlyId
  friendly_id :name, :use => :slugged

  # validations
  validates :locale, :inclusion => I18n.available_locales.map(&:to_s),
                     :if => proc { |slider| slider.locale.present? }
  validates :name, :presence => true,
                   :uniqueness => { :scope => :locale }

  # class methods
  def self.for_locale(locale)
    where(
      self.arel_table[:locale].eq(locale).or(
        self.arel_table[:locale].eq(nil)
      )
    ).order('locale DESC')
  end

  # instance methods

  def interval_in_milliseconds
    (interval * 1000).to_i
  end

  private

  def set_defaults
    if new_record?
      self.auto_start = Ecm::Sliders::Configuration.slider_auto_start if auto_start.nil?
      self.interval ||= Ecm::Sliders::Configuration.slider_interval
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ecm_sliders-1.0.4.pre app/models/ecm/sliders/slider.rb
ecm_sliders-1.0.3.pre app/models/ecm/sliders/slider.rb
ecm_sliders-1.0.2.pre app/models/ecm/sliders/slider.rb
ecm_sliders-1.0.1.pre app/models/ecm/sliders/slider.rb
ecm_sliders-1.0.0.pre app/models/ecm/sliders/slider.rb