Class: Vanity::Adapters::ActiveRecordAdapter::VanityParticipant
- Inherits:
-
VanityRecord
- Object
- ActiveRecord::Base
- VanityRecord
- Vanity::Adapters::ActiveRecordAdapter::VanityParticipant
- Defined in:
- lib/vanity/adapters/active_record_adapter.rb
Overview
Participant model
Class Method Summary collapse
-
.retrieve(experiment, identity, create = true, update_with = nil) ⇒ Object
Finds the participant by experiment and identity.
Methods inherited from VanityRecord
needs_attr_accessible?, rails_agnostic_find_or_create_by
Class Method Details
.retrieve(experiment, identity, create = true, update_with = nil) ⇒ Object
Finds the participant by experiment and identity. If create is true then it will create the participant if not found. If a hash is passed then this will be passed to create if creating, or will be used to update the found participant.
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/vanity/adapters/active_record_adapter.rb', line 104 def self.retrieve(experiment, identity, create = true, update_with = nil) retried = false begin if record = VanityParticipant.where(experiment_id: experiment.to_s, identity: identity.to_s).first # rubocop:todo Lint/AssignmentInCondition record.update(update_with) if update_with elsif create record = VanityParticipant.create({ experiment_id: experiment.to_s, identity: identity.to_s }.merge(update_with || {})) end record rescue ActiveRecord::RecordNotUnique => e if retried # rubocop:todo Style/GuardClause raise e else retried = true retry end end end |