Class: RailsDrips::Campaign

Inherits:
ApplicationRecord show all
Includes:
JsonData
Defined in:
app/models/rails_drips/campaign.rb

Instance Method Summary collapse

Methods included from JsonData

#data_value

Instance Method Details

#activate_version!(version, actor: nil) ⇒ Object

Raises:

  • (ArgumentError)


40
41
42
43
44
45
46
47
48
49
50
51
# File 'app/models/rails_drips/campaign.rb', line 40

def activate_version!(version, actor: nil)
  raise ArgumentError, "Version does not belong to this campaign" unless version.campaign == self
  raise ArgumentError, "Archived campaigns must be unarchived before activation" if archived?
  raise ArgumentError, "Only draft versions can be activated" unless version.draft?

  with_lock do
    campaign_versions.status_active.where.not(id: version.id).find_each(&:retire!)
    version.created_by ||= actor if actor
    version.update!(status: :active, activated_at: Time.current)
    update!(status: :active, current_version: version)
  end
end

#active?Boolean

Returns:

  • (Boolean)


28
# File 'app/models/rails_drips/campaign.rb', line 28

def active? = status_active?

#active_for_enrollment?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'app/models/rails_drips/campaign.rb', line 36

def active_for_enrollment?
  active_version.present?
end

#active_versionObject



32
33
34
# File 'app/models/rails_drips/campaign.rb', line 32

def active_version
  current_version if active? && current_version&.active?
end

#archived?Boolean

Returns:

  • (Boolean)


29
# File 'app/models/rails_drips/campaign.rb', line 29

def archived? = status_archived?

#draft?Boolean

Returns:

  • (Boolean)


27
# File 'app/models/rails_drips/campaign.rb', line 27

def draft? = status_draft?

#paused?Boolean

Returns:

  • (Boolean)


30
# File 'app/models/rails_drips/campaign.rb', line 30

def paused? = status_paused?