Module: CalculableAttrs::ActiveRecord::Base
- Defined in:
- lib/calculable_attrs/active_record/base.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #calculable_attr_value(name) ⇒ Object
- #calculable_attrs_values ⇒ Object
- #calculable_attrs_values=(values) ⇒ Object
- #recalc_calculable_attr_with_siblings(name) ⇒ Object
- #set_calculable_attr_value(name, value) ⇒ Object
Class Method Details
.included(base) ⇒ Object
35 36 37 |
# File 'lib/calculable_attrs/active_record/base.rb', line 35 def self.included(base) base.extend(ClassMethods) end |
Instance Method Details
#calculable_attr_value(name) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/calculable_attrs/active_record/base.rb', line 39 def calculable_attr_value(name) name = name.to_sym check_calculable_attr_name!(name) unless calculable_attrs_calculated_flags[name] recalc_calculable_attr_with_siblings(name) end calculable_attrs_values[name] end |
#calculable_attrs_values ⇒ Object
55 56 57 |
# File 'lib/calculable_attrs/active_record/base.rb', line 55 def calculable_attrs_values @calculable_attrs_values ||= {} end |
#calculable_attrs_values=(values) ⇒ Object
59 60 61 |
# File 'lib/calculable_attrs/active_record/base.rb', line 59 def calculable_attrs_values=(values) values.each { |key, value| set_calculable_attr_value(key, value) } end |
#recalc_calculable_attr_with_siblings(name) ⇒ Object
63 64 65 66 67 68 |
# File 'lib/calculable_attrs/active_record/base.rb', line 63 def recalc_calculable_attr_with_siblings(name) name = name.to_sym check_calculable_attr_name!(name) calculator = self.class.calculable_attrs_calculators[name] self.calculable_attrs_values = calculator.calculate_all(id) end |
#set_calculable_attr_value(name, value) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/calculable_attrs/active_record/base.rb', line 48 def set_calculable_attr_value(name, value) name = name.to_sym check_calculable_attr_name!(name) calculable_attrs_calculated_flags[name] = true calculable_attrs_values[name] = value end |