Sha256: 7ac117772b653963be15057aebb05d68ec04904e22140fb5204d7783d64df898

Contents?: true

Size: 997 Bytes

Versions: 4

Compression:

Stored size: 997 Bytes

Contents

module DynamicFieldsets
  # A clause in CNF expression for question dependencies
  #
  # @author Jeremiah Hemphill
  class DependencyClause < ActiveRecord::Base
    self.table_name = "dynamic_fieldsets_dependency_clauses"
    belongs_to :dependency_group  

    has_many :dependencies
    accepts_nested_attributes_for :dependencies, :allow_destroy => true

    validates_presence_of :dependency_group_id

    # Evaluates the depdendencies in the claus by ORing them together
    # Short circuit evaluation returns true as soon as possible
    #
    # @param [Hash] input_values A hash of fieldset_child_id:value pairs to test against
    # @return [Boolean] True if one of the dependencies is true
    def evaluate(input_values)
      self.dependencies.each do |dependency|
        if dependency.evaluate
          return true
        end
      end
      return false
    end

    def to_hash
      return { "id" => self.id, "dependency_group_id" => self.dependency_group_id }
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dynamic_fieldsets-0.1.3 app/models/dynamic_fieldsets/dependency_clause.rb
dynamic_fieldsets-0.1.2 app/models/dynamic_fieldsets/dependency_clause.rb
dynamic_fieldsets-0.1.1 app/models/dynamic_fieldsets/dependency_clause.rb
dynamic_fieldsets-0.1.0 app/models/dynamic_fieldsets/dependency_clause.rb