class Album < ActiveRecord::Base belongs_to :artist has_many :tracks, :conditions => ['position > 0'], :order => 'bonus ASC, position ASC', :dependent => :destroy has_many :album_formats has_many :release_formats, :through => :album_formats default_scope where(:master => true) after_save :clear_artist_cache def self.with_format f joins(:release_formats).where(:release_formats => { :hash => f.to_s }) end def serialize { name: name, pic_url: pic_url, year: year, tracks: tracks.map(&:serialize) } end private def clear_artist_cache artist.clear_cache end end