class Artist < ActiveRecord::Base has_many :albums, :conditions => ['has_pic = 1'], :order => 'year ASC', :dependent => :destroy has_many :artist_links, :dependent => :destroy has_many :artist_aliases, :dependent => :destroy has_many :tracks, :through => :track_artists has_many :playlists after_initialize :prepare_description after_save :clear_cache def status_str %w(loading ok fail)[self.status] end def load_again! albums.each(&:destroy) artist_links.each(&:destroy) artist_aliases.each(&:destroy) self.status = 0 save! Delayed::Job.enqueue(LoadArtistJob.new(name)) clear_cache end def serialize { name: name, original_name: original_name, url_name: name.gsub(" ", "+"), pic_url: pic_url, desc: desc, albums: albums.map(&:serialize), artist_links: artist_links.map(&:serialize) } end def clear_cache Rails.cache.delete "artist_#{id}" end private def prepare_description self.desc.gsub!(/[\[<].*?[\]>]/, '') unless self.desc.nil? rescue # WTF?! end end