Module: Ardm::ActiveRecord::Query::ClassMethods
- Defined in:
- lib/ardm/active_record/query.rb
Instance Method Summary collapse
-
#expand_hash_conditions_for_aggregates(options) ⇒ Object
hook into query engine in the most general way possible.
- #first_or_create(find_params) ⇒ Object
- #first_or_create!(find_params) ⇒ Object
- #first_or_initialize(find_params) ⇒ Object
- #get(id) ⇒ Object
- #get!(id) ⇒ Object
Instance Method Details
#expand_hash_conditions_for_aggregates(options) ⇒ Object
hook into query engine in the most general way possible
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/ardm/active_record/query.rb', line 30 def () complex, simple = .partition {|k,v| Ardm::Query::Operator === k } result = super(Hash[simple]) # send simple all at once to save computation complex.each do |(operator, value)| = super(operator.target => value) if .size > 1 $stderr.puts "WARNING: Operator #{operator.target.inspect} on multiple attribute aggregate #{expanded_opts.inspect} might be totally crazyballs." end .each do |new_key, new_val| new_operator = Ardm::Query::Operator.new(new_key, operator.operator) result[new_operator] = new_val end end # This hack allows access to the original class from within the PredicateBuilder (so hax) class << result attr_accessor :klass end result.klass = self result end |
#first_or_create(find_params) ⇒ Object
62 63 64 |
# File 'lib/ardm/active_record/query.rb', line 62 def first_or_create(find_params) all(find_params).first_or_create end |
#first_or_create!(find_params) ⇒ Object
66 67 68 |
# File 'lib/ardm/active_record/query.rb', line 66 def first_or_create!(find_params) all(find_params).first_or_create! end |
#first_or_initialize(find_params) ⇒ Object
70 71 72 |
# File 'lib/ardm/active_record/query.rb', line 70 def first_or_initialize(find_params) all(find_params).first_or_initialize end |
#get(id) ⇒ Object
54 55 56 |
# File 'lib/ardm/active_record/query.rb', line 54 def get(id) all(id: id).first end |
#get!(id) ⇒ Object
58 59 60 |
# File 'lib/ardm/active_record/query.rb', line 58 def get!(id) find(id) end |