module Monarchy::ActsAsResource::InstanceMethods
Public Instance Methods
accessible_for(user, options = {})
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 102 def accessible_for(user, options = {}) Monarchy::Validators.user(user) hierarchy.accessible_for(user, options) end
children()
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 83 def children @children ||= children_resources end
children=(array)
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 87 def children=(array) hierarchy&.update(children: children_hierarchies(array)) @children = array end
ensure_hierarchy(force = false)
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 92 def ensure_hierarchy(force = false) return nil unless self.class.automatic_hierarchy || force self.hierarchy ||= Monarchy.hierarchy_class.create( resource: self, parent: parent.try(:hierarchy), children: children_hierarchies(children) ) end
parent()
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 73 def parent @parent = parent_resource || @parent end
parent=(resource)
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 77 def parent=(resource) Monarchy::Validators.resource(resource, true) hierarchy&.update(parent: resource.try(:ensure_hierarchy)) @parent = resource end
Private Instance Methods
assign_parent(force = false)
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 109 def assign_parent(force = false) parentize = self.class.parentize_name return unless parentize keys = relation_keys(parentize) was_changed = saved_changes[keys[:foreign_key]] || saved_changes[keys[:foreign_type]] Monarchy::Validators.resource(send(parentize), true, false) self.parent = send(parentize) if was_changed || force end
children_hierarchies(array)
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 136 def children_hierarchies(array) array&.compact! Array(array).map { |resource| Monarchy::Validators.resource(resource).hierarchy } end
children_resources()
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 124 def children_resources resource_hierarchy = Monarchy.hierarchy_class.hierarchies_for(self) hierarchy_children = Monarchy.hierarchy_class.children_for(resource_hierarchy) hierarchy_children.includes(:resource).map(&:resource) end
parent_resource()
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 130 def parent_resource resource_hierarchy = Monarchy.hierarchy_class.hierarchies_for(self) hierarchy_parent = Monarchy.hierarchy_class.parents_for(resource_hierarchy) hierarchy_parent.first&.resource end
relation_keys(relation_name)
click to toggle source
# File lib/monarchy/acts_as_resource.rb, line 119 def relation_keys(relation_name) reflection = self.class.reflections[relation_name.to_s] { foreign_key: reflection.foreign_key, foreign_type: reflection.foreign_type } end