Sha256: 931b74324a9cc073e64ee082b8fd86b8aac17159363f2c4bc92f2cc26831b8c3

Contents?: true

Size: 945 Bytes

Versions: 2

Compression:

Stored size: 945 Bytes

Contents

require 'friendly_id'

class SongRef < ActiveRecord::Base
	extend FriendlyId
  include Extensions::UUID  

  friendly_id :slug

	has_many :songs, :foreign_key => :song_ref_uuid, :primary_key => :uuid
	has_many :song_occurences, :foreign_key => :song_ref_uuid, :primary_key => :uuid
	has_many :shows, -> {distinct}, :through => :song_occurences, :foreign_key => :song_ref_uuid

  accepts_nested_attributes_for :song_occurences

  def self.create_from(spec)
    song_ref = SongRef.new
    set_spec(song_ref, spec)
    song_ref.save    
  end

  def self.update_from(spec) 
    song_ref = SongRef.find_by_uuid(spec[:uuid])
    set_spec(song_ref, spec)
    song_ref.save
  end
	
  def self.remove_from(spec)
    SongRef.find_by_uuid(spec[:uuid]).delete
  end

  private

  def self.set_spec(song_ref, spec)
    song_ref.uuid = spec[:uuid]
    song_ref.name = spec[:name]
    song_ref.slug = spec[:name].parameterize.underscore
    song_ref
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gdshowsdb-4.0.2 lib/gdshowsdb/models/song_ref.rb
gdshowsdb-4.0.1 lib/gdshowsdb/models/song_ref.rb