27 lines
670 B
Ruby
27 lines
670 B
Ruby
class Collection < ActiveRecord::Base
|
|
extend Ext::GroupFor
|
|
|
|
ajaxful_rateable :stars => 5, :cache_column => :rating_average
|
|
|
|
has_many :collection_albums
|
|
has_many :albums, :through => :collection_albums
|
|
attr_accessor :album_list
|
|
|
|
validates :title, :presence => true
|
|
|
|
scope :visible, where(:public => true)
|
|
scope :popular, lambda{visible.includes(:albums => :photos).where("photos.id NOT NULL").order('collections.rating_average desc')}
|
|
|
|
def photos_count
|
|
self.albums.includes(:photos).size
|
|
end
|
|
|
|
def to_param
|
|
"#{id}-#{title.parameterize}"
|
|
end
|
|
|
|
def album_list=(albums)
|
|
self.albums = Album.find(albums.map{|album|album[0]})
|
|
end
|
|
|
|
end |