Module: Selections::Selectable::ModelMixin
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/selections/selectable.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- HIDDEN_POSITION =
:nodoc:
999888777
Instance Method Summary collapse
-
#archived ⇒ Object
:nodoc:.
-
#archived=(archived_checkbox) ⇒ Object
:nodoc:.
-
#auto_gen_system_code ⇒ Object
:nodoc:.
-
#check_defaults ⇒ Object
:nodoc:.
-
#default ⇒ Object
returns first default item in list e.g.
-
#disable_system_code_change ⇒ Object
:nodoc:.
-
#leaf? ⇒ Boolean
Returns boolean true if current node has no children.
-
#level_2 ⇒ Object
Returns childrens children from root or any point.
-
#position ⇒ Object
:nodoc:.
-
#position=(value) ⇒ Object
:nodoc:.
-
#siblings_with_default_set ⇒ Object
:nodoc:.
- #sub_children ⇒ Object
-
#to_s ⇒ Object
:nodoc:.
Instance Method Details
#archived ⇒ Object
:nodoc:
129 130 131 |
# File 'lib/selections/selectable.rb', line 129 def archived #:nodoc: !!archived_at end |
#archived=(archived_checkbox) ⇒ Object
:nodoc:
133 134 135 136 137 138 139 |
# File 'lib/selections/selectable.rb', line 133 def archived=(archived_checkbox) #:nodoc: if archived_checkbox == "1" self.archived_at = Time.now unless archived_at else self.archived_at = nil end end |
#auto_gen_system_code ⇒ Object
:nodoc:
112 113 114 115 116 117 118 |
# File 'lib/selections/selectable.rb', line 112 def auto_gen_system_code #:nodoc: unless system_code self.system_code= name.to_s.underscore.split(" ").join("_").singularize.underscore.gsub(/\W/, "_") self.system_code= parent.system_code + "_" + self.system_code if parent self.system_code.gsub!(/\_{2,}/, '_') end end |
#check_defaults ⇒ Object
:nodoc:
120 121 122 123 |
# File 'lib/selections/selectable.rb', line 120 def check_defaults #:nodoc: siblings_with_default_set.update_attribute(:is_default, false) if self.parent && siblings_with_default_set && self.is_default self.is_default = false if archived end |
#default ⇒ Object
returns first default item in list e.g. Selection.priorities.default
146 147 148 |
# File 'lib/selections/selectable.rb', line 146 def default children.where(:is_default => true).order(:position_value).first end |
#disable_system_code_change ⇒ Object
:nodoc:
104 105 106 |
# File 'lib/selections/selectable.rb', line 104 def disable_system_code_change #:nodoc: errors.add(:system_code, "cannot be changed") if system_code_changed? end |
#leaf? ⇒ Boolean
Returns boolean true if current node has no children
91 92 93 |
# File 'lib/selections/selectable.rb', line 91 def leaf? children.where(parent_id: self.id).empty? end |
#level_2 ⇒ Object
Returns childrens children from root or any point
96 97 98 |
# File 'lib/selections/selectable.rb', line 96 def level_2 Selection.where(parent_id: child_ids) end |
#position ⇒ Object
:nodoc:
108 109 110 |
# File 'lib/selections/selectable.rb', line 108 def position #:nodoc: position_value unless position_value == HIDDEN_POSITION end |
#position=(value) ⇒ Object
:nodoc:
100 101 102 |
# File 'lib/selections/selectable.rb', line 100 def position=(value) #:nodoc: self.position_value = value || HIDDEN_POSITION end |
#siblings_with_default_set ⇒ Object
:nodoc:
125 126 127 |
# File 'lib/selections/selectable.rb', line 125 def siblings_with_default_set #:nodoc: self.parent.children.where(is_default: true).where("id != ?", self.id.to_i).first end |
#sub_children ⇒ Object
141 142 143 |
# File 'lib/selections/selectable.rb', line 141 def sub_children children.flat_map(&:children) end |
#to_s ⇒ Object
:nodoc:
86 87 88 |
# File 'lib/selections/selectable.rb', line 86 def to_s #:nodoc: name.to_s end |