Class: DependencyCondition

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/dependency_condition.rb

Constant Summary collapse

OPERATORS =

Constants

%w(== != < > <= >=)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.operatorsObject

Class methods



24
25
26
# File 'app/models/dependency_condition.rb', line 24

def self.operators
  OPERATORS
end

Instance Method Details

#is_met?(response) ⇒ Boolean

Checks to see if the response passed in meets the dependency condition

Returns:

  • (Boolean)


35
36
37
38
39
40
41
42
43
44
45
# File 'app/models/dependency_condition.rb', line 35

def is_met?(response)
  klass = response.answer.response_class
  return case self.operator
  when "==", "<", ">", "<=", ">="
    response.as(klass).send(self.operator, self.as(klass))
  when "!="
    !(response.as(klass) == self.as(klass))
  else
    false
  end
end

#to_hash(response_set) ⇒ Object

Instance methods



29
30
31
32
# File 'app/models/dependency_condition.rb', line 29

def to_hash(response_set)
  response = response_set.responses.detect{|r| r.answer_id.to_i == self.answer_id.to_i} || false # eval("nil and false") => nil so return false if no response is found
  {rule_key.to_sym => (response and self.is_met?(response))}
end