Sha256: ee6ce38226e3d0521ac37a70d2be7818e81df1677c30fd1700ddbfe40f9a13bc

Contents?: true

Size: 930 Bytes

Versions: 8

Compression:

Stored size: 930 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, :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

8 entries across 8 versions & 1 rubygems

Version Path
gdshowsdb-4.0.0 lib/gdshowsdb/models/song_ref.rb
gdshowsdb-3.0.0 lib/gdshowsdb/models/song_ref.rb
gdshowsdb-2.1.0 lib/gdshowsdb/models/song_ref.rb
gdshowsdb-2.0.0 lib/gdshowsdb/models/song_ref.rb
gdshowsdb-1.0.3 lib/gdshowsdb/models/song_ref.rb
gdshowsdb-1.0.2 lib/gdshowsdb/models/song_ref.rb
gdshowsdb-1.0.1 lib/gdshowsdb/models/song_ref.rb
gdshowsdb-1.0.0 lib/gdshowsdb/models/song_ref.rb