base_photo_app/app/models/album_folder.rb

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