Sha256: 696f75770f31dc91ef2693b1bf805c46179484d346ebccf26e66115ae5a68e8c

Contents?: true

Size: 1016 Bytes

Versions: 1

Compression:

Stored size: 1016 Bytes

Contents

module Split
  class Trial
    attr_accessor :experiment
    attr_writer :alternative

    def initialize(attrs = {})
      self.experiment = attrs[:experiment]  if !attrs[:experiment].nil?
      self.alternative = attrs[:alternative] if !attrs[:alternative].nil?
      self.alternative_name = attrs[:alternative_name] if !attrs[:alternative_name].nil?
    end

    def alternative
      @alternative ||=  if experiment.winner
                          experiment.winner
                        end
    end

    def complete!
      alternative.increment_completion if alternative
    end

    def choose!
      choose
      record!
    end
    
    def record!
      alternative.increment_participation
    end

    def choose
      if experiment.winner
        self.alternative = experiment.winner
      else
        self.alternative = experiment.next_alternative
      end
    end
    
    def alternative_name=(name)
      self.alternative= self.experiment.alternatives.find{|a| a.name == name }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
split-0.5.0 lib/split/trial.rb