89 lines
1.5 KiB
Ruby
89 lines
1.5 KiB
Ruby
class AlbumFolder < ActiveRecord::Base
|
|
|
|
acts_as_tree
|
|
has_many :albums
|
|
validates :name, :presence => true
|
|
attr_accessor :nested_children_ids_var, :no_image_count
|
|
|
|
|
|
def explore_ids(af)
|
|
@nested_children_ids_var << af.id
|
|
puts af.id
|
|
self.children.each do |af|
|
|
|
|
af.explore_ids(af)
|
|
|
|
end
|
|
end
|
|
|
|
def nested_children_ids
|
|
|
|
@nested_children_ids_var = [self.id]
|
|
|
|
self.children.each do |af|
|
|
|
|
af.explore_ids(af)
|
|
|
|
end
|
|
|
|
@nested_children_ids_var = @nested_children_ids_var.uniq!
|
|
|
|
|
|
end
|
|
|
|
def self_and_descendants_ids
|
|
self.self_and_descendants.map(&:id).uniq
|
|
end
|
|
|
|
def self_and_descendants_albums
|
|
Album.where(:album_folder_id => self.self_and_descendants_ids)
|
|
end
|
|
|
|
def self_and_descendants_albums_ids
|
|
self.self_and_descendants_albums.map(&:id).uniq
|
|
end
|
|
|
|
|
|
def image_files
|
|
ImageFile.where(:album_id => self.self_and_descendants_albums_ids)
|
|
end
|
|
|
|
|
|
def update_image_count
|
|
puts "update"
|
|
self.images_count_cache = self.image_files.count
|
|
self.no_image_count = true
|
|
self.save
|
|
|
|
|
|
|
|
end
|
|
|
|
def self.update_image_counts
|
|
AlbumFolder.all.each do |album_folder|
|
|
album_folder.update_image_count
|
|
end
|
|
|
|
end
|
|
|
|
|
|
after_save do
|
|
if !self.no_image_count
|
|
self.no_image_count = true
|
|
self.update_image_count
|
|
|
|
self.ancestors.each do |ancest|
|
|
ancest.no_image_count = true
|
|
ancest.update_image_count
|
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|