Sha256: ce84d3728de6ba873a448f0f35eb5cf741be751b7cc52006025b550658ef6eab

Contents?: true

Size: 827 Bytes

Versions: 6

Compression:

Stored size: 827 Bytes

Contents

module Laboratory
  class Experiment
    class Variant
      attr_accessor :id, :percentage
      attr_reader(
        :_original_id,
        :_original_percentage,
        :participant_ids,
        :events
      )

      def initialize(id:, percentage:, participant_ids: [], events: [])
        @id = id
        @percentage = percentage
        @participant_ids = participant_ids
        @events = events

        @_original_id = id
        @_original_percentage = percentage
      end

      def add_participant(user)
        participant_ids << user.id
      end

      def changeset
        set = {}
        set[:id] = [_original_id, id] if _original_id != id

        if _original_percentage != percentage
          set[:percentage] = [_original_percentage, percentage]
        end

        set
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
laboratory-0.1.7 lib/laboratory/experiment/variant.rb
laboratory-0.1.6 lib/laboratory/experiment/variant.rb
laboratory-0.1.5 lib/laboratory/experiment/variant.rb
laboratory-0.1.4 lib/laboratory/experiment/variant.rb
laboratory-0.1.3 lib/laboratory/experiment/variant.rb
laboratory-0.1.2 lib/laboratory/experiment/variant.rb