Class: PredicateScope::Evaluator
- Inherits:
-
Object
- Object
- PredicateScope::Evaluator
- Defined in:
- lib/predicate_scope.rb
Instance Method Summary collapse
- #eval ⇒ Object
-
#initialize(relation, instance) ⇒ Evaluator
constructor
A new instance of Evaluator.
Constructor Details
#initialize(relation, instance) ⇒ Evaluator
Returns a new instance of Evaluator.
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/predicate_scope.rb', line 51 def initialize(relation, instance) @relation = relation @instance = instance @instances_by_table = { instance.class.table_name => instance } associations = relation.values[:joins].to_a.chain(relation.values[:includes].to_a) associations.each do |association_name| object = instance.public_send(association_name) @instances_by_table[object.class.table_name] = object end end |
Instance Method Details
#eval ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'lib/predicate_scope.rb', line 63 def eval cores = @relation.arel.ast.cores if cores.length > 1 raise Errors::MultipleCores.new end root = cores.first eval_node(root) end |