Class: Qwester::RuleSet

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

Constant Summary collapse

DEFAULT_RULE_JOIN =
'or'
ANSWERS_LIMIT =
10

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.matching(answers) ⇒ Object



32
33
34
# File 'app/models/qwester/rule_set.rb', line 32

def self.matching(answers)
  all.select{|rule_set| rule_set.match(answers)}
end

Instance Method Details

#blocking_answer_setsObject



50
51
52
# File 'app/models/qwester/rule_set.rb', line 50

def blocking_answer_sets
  @blocking_answer_set ||= logic.blocking_combinations
end

#default_ruleObject



54
55
56
# File 'app/models/qwester/rule_set.rb', line 54

def default_rule
  answers.collect(&:rule_label).join(" #{DEFAULT_RULE_JOIN} ")
end

#logicObject



42
43
44
# File 'app/models/qwester/rule_set.rb', line 42

def logic
  @logic || get_logic
end

#match(answers_to_check = nil) ⇒ Object



36
37
38
39
40
# File 'app/models/qwester/rule_set.rb', line 36

def match(answers_to_check = nil)
  return unless answers_to_check and !answers_to_check.empty?
  generate_default_rule && save
  logic.match(answers_to_check)
end

#matching_answer_setsObject



46
47
48
# File 'app/models/qwester/rule_set.rb', line 46

def matching_answer_sets
  @matching_answer_sets ||= logic.matching_combinations 
end