Class: RailsDrips::Campaign
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- RailsDrips::Campaign
- Includes:
- JsonData
- Defined in:
- app/models/rails_drips/campaign.rb
Instance Method Summary collapse
- #activate_version!(version, actor: nil) ⇒ Object
- #active? ⇒ Boolean
- #active_for_enrollment? ⇒ Boolean
- #active_version ⇒ Object
- #archived? ⇒ Boolean
- #draft? ⇒ Boolean
- #paused? ⇒ Boolean
Methods included from JsonData
Instance Method Details
#activate_version!(version, actor: nil) ⇒ Object
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
28 |
# File 'app/models/rails_drips/campaign.rb', line 28 def active? = status_active? |
#active_for_enrollment? ⇒ Boolean
36 37 38 |
# File 'app/models/rails_drips/campaign.rb', line 36 def active_for_enrollment? active_version.present? end |
#active_version ⇒ Object
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
29 |
# File 'app/models/rails_drips/campaign.rb', line 29 def archived? = status_archived? |
#draft? ⇒ Boolean
27 |
# File 'app/models/rails_drips/campaign.rb', line 27 def draft? = status_draft? |
#paused? ⇒ Boolean
30 |
# File 'app/models/rails_drips/campaign.rb', line 30 def paused? = status_paused? |