Module: CalculableAttrs::ActiveRecord::Relation
- Defined in:
- lib/calculable_attrs/active_record/relation.rb
Constant Summary collapse
- JOINED_RELATION_NAME =
'calculated_attrs'
Class Method Summary collapse
Instance Method Summary collapse
- #includes_calculable_attrs(*attrs) ⇒ Object (also: #calculate_attrs)
- #includes_calculable_attrs!(*attrs) ⇒ Object (also: #calculate_attrs!)
- #joins_calculable_attrs(*attrs) ⇒ Object
- #joins_calculable_attrs!(*attrs) ⇒ Object
Class Method Details
.included(base) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/calculable_attrs/active_record/relation.rb', line 25 def self.included(base) base.class_eval do alias_method :calculable_orig_exec_queries, :exec_queries alias_method :calculable_orig_calculate, :calculate def exec_queries if calculable_attrs_joined.empty? calculable_orig_exec_queries else wrap_with_left_joins_and_exec_queries end apped_calculable_attrs @records end def calculate(operation, column_name, = {}) if calculable_attrs_joined.empty? calculable_orig_calculate(operation,column_name,) else relation = wrap_with_calculable_joins(spawn) relation.calculable_orig_calculate(operation,column_name,) end end end end |
Instance Method Details
#includes_calculable_attrs(*attrs) ⇒ Object Also known as: calculate_attrs
4 5 6 |
# File 'lib/calculable_attrs/active_record/relation.rb', line 4 def includes_calculable_attrs(*attrs) spawn.includes_calculable_attrs!(*attrs) end |
#includes_calculable_attrs!(*attrs) ⇒ Object Also known as: calculate_attrs!
9 10 11 12 |
# File 'lib/calculable_attrs/active_record/relation.rb', line 9 def includes_calculable_attrs!(*attrs) set_calculable_attrs_included(refine_calculable_attrs(attrs)) self end |
#joins_calculable_attrs(*attrs) ⇒ Object
15 16 17 |
# File 'lib/calculable_attrs/active_record/relation.rb', line 15 def joins_calculable_attrs(*attrs) spawn.joins_calculable_attrs!(*attrs) end |
#joins_calculable_attrs!(*attrs) ⇒ Object
19 20 21 22 |
# File 'lib/calculable_attrs/active_record/relation.rb', line 19 def joins_calculable_attrs!(*attrs) set_calculable_attrs_joined(refine_calculable_attrs(attrs)) self end |