Sha256: 3d8965d438b0e210453973b47c39734c71d1821122af6313f26e1bd680321f46

Contents?: true

Size: 991 Bytes

Versions: 2

Compression:

Stored size: 991 Bytes

Contents

class ShowSet < ActiveRecord::Base
	include Extensions::UUID

	has_many :songs, :foreign_key => :show_set_uuid, :primary_key => :uuid
	belongs_to :show, :foreign_key => :show_uuid, :primary_key => :uuid
  accepts_nested_attributes_for :songs
	
	attr_accessible :uuid, :show_uuid, :position, :encore
  
  def self.create_from(spec)
    ShowSet.create(spec) do |show_set|
      show_set.show = Show.find_by_uuid(spec[:show_uuid])
    end
  end

  def self.update_from(spec)
    ShowSet.update(spec[:uuid], spec) do |show_set|
      show_set.show = Show.find_by_uuid(spec[:show_uuid])
    end
  end
  
  def self.remove_from(spec)
    ShowSet.find_by_uuid(spec[:uuid]).delete
  end

  def self.find_all_by_year(year)
    ShowSet.joins(:show).where('shows.year = ?', year)
  end

  def self.encore?(sets, set)
    return false unless sets
    last = (sets.size - 1) == sets.index(set)
    song_size = set[:songs].size          
    song_size < 3 && last
  end

  def encore?
    encore
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gdshowsdb-0.9.1 lib/gdshowsdb/models/show_set.rb
gdshowsdb-0.9.0 lib/gdshowsdb/models/show_set.rb