Class: DeedCategory
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- DeedCategory
- Includes:
- Checkable, HasUuid, NestedPriority, Toggleable
- Defined in:
- app/models/deed_category.rb
Overview
Deed category
Attributes:
children_cache [Array<Integer>]
created_at [DateTime]
data [JSON]
deeds_count [Integer]
name [String]
parent_id [DeedCategory], optional
parents_cache [String]
priority [Integer]
updated_at [DateTime]
uuid [UUID]
visible [Boolean]
Constant Summary collapse
- NAME_LIMIT =
75
Class Method Summary collapse
Instance Method Summary collapse
- #add_deed(deed) ⇒ Object
- #cache_children!(new_cache = []) ⇒ Object
- #cache_parents! ⇒ Object
- #deed?(deed) ⇒ Boolean
- #depth ⇒ Object
- #remove_deed(deed) ⇒ Object
Class Method Details
.creation_parameters ⇒ Object
53 54 55 |
# File 'app/models/deed_category.rb', line 53 def self.creation_parameters entity_parameters + i[parent_id] end |
.entity_parameters ⇒ Object
49 50 51 |
# File 'app/models/deed_category.rb', line 49 def self.entity_parameters i[name priority visible] end |
.siblings(entity) ⇒ Object
45 46 47 |
# File 'app/models/deed_category.rb', line 45 def self.siblings(entity) where(parent_id: entity&.parent_id) end |
Instance Method Details
#add_deed(deed) ⇒ Object
63 64 65 |
# File 'app/models/deed_category.rb', line 63 def add_deed(deed) deed_deed_categories.create(deed: deed) end |
#cache_children!(new_cache = []) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 |
# File 'app/models/deed_category.rb', line 84 def cache_children!(new_cache = []) if new_cache.blank? new_cache = child_categories.order('id asc').pluck(:id, :children_cache) end self.children_cache += new_cache.flatten self.children_cache.uniq! save! parent&.cache_children!([id] + children_cache) end |
#cache_parents! ⇒ Object
76 77 78 79 80 81 |
# File 'app/models/deed_category.rb', line 76 def cache_parents! return if parent.nil? self.parents_cache = "#{parent.parents_cache},#{parent_id}".gsub(/\A,/, '') save! end |
#deed?(deed) ⇒ Boolean
58 59 60 |
# File 'app/models/deed_category.rb', line 58 def deed?(deed) deed_deed_categories.where(deed: deed).exists? end |
#depth ⇒ Object
72 73 74 |
# File 'app/models/deed_category.rb', line 72 def depth parents_cache.split(',').count end |
#remove_deed(deed) ⇒ Object
68 69 70 |
# File 'app/models/deed_category.rb', line 68 def remove_deed(deed) deed_deed_categories.where(deed: deed).destroy_all end |