diff --git a/lib/split/alternative.rb b/lib/split/alternative.rb index a9a673c9..8e21f80e 100644 --- a/lib/split/alternative.rb +++ b/lib/split/alternative.rb @@ -6,6 +6,7 @@ class Alternative attr_accessor :experiment_name attr_accessor :weight attr_accessor :recorded_info + attr_writer :experiment def initialize(name, experiment_name) @experiment_name = experiment_name @@ -100,7 +101,7 @@ def conversion_rate(goal = nil) end def experiment - Split::ExperimentCatalog.find(experiment_name) + @experiment ||= Split::ExperimentCatalog.find(experiment_name) end def z_score(goal = nil) diff --git a/lib/split/experiment.rb b/lib/split/experiment.rb index 17d88e08..d181ee7f 100644 --- a/lib/split/experiment.rb +++ b/lib/split/experiment.rb @@ -57,7 +57,7 @@ def set_alternatives_and_options(options) ) self.alternatives = options_with_defaults[:alternatives] - self.goals = options_with_defaults[:goals] + self.goals = options_with_defaults[:goals] || [] self.resettable = options_with_defaults[:resettable] self.algorithm = options_with_defaults[:algorithm] self.metadata = options_with_defaults[:metadata] @@ -145,6 +145,7 @@ def alternatives=(alts) Split::Alternative.new(alternative, @name) end end + @alternatives.each { |alternative| alternative.experiment = self } end def winner