Class: Campaign
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Campaign
- Includes:
- Checkable, RequiredUniqueName, RequiredUniqueSlug, Toggleable
- Defined in:
- app/models/campaign.rb
Overview
Election campaign
Attributes:
active [boolean]
candidates_count [integer]
created_at [DateTime]
date [date], optional
image [SimpleImageUploader], optional
name [string]
region_id [Region], optional
slug [string]
sync_state [JSON]
updated_at [DateTime]
uuid [uuid]
Constant Summary collapse
- NAME_LIMIT =
50- SLUG_LIMIT =
50- SLUG_PATTERN =
/\A[a-z][-_a-z0-9]*[a-z0-9]\z/i.freeze
- SLUG_PATTERN_HTML =
'^[a-zA-Z][-_a-zA-Z0-9]*[a-zA-Z0-9]$'
Class Method Summary collapse
Instance Method Summary collapse
- #approved?(user) ⇒ Boolean
- #candidate?(entity) ⇒ Boolean
- #regional? ⇒ Boolean
- #user?(entity) ⇒ Boolean
Class Method Details
.entity_parameters ⇒ Object
49 50 51 |
# File 'app/models/campaign.rb', line 49 def self.entity_parameters i[active date image name region_id slug] end |
.user_can_join?(user) ⇒ Boolean
54 55 56 57 58 |
# File 'app/models/campaign.rb', line 54 def self.user_can_join?(user) total = list_for_visitors.count taken = list_for_visitors.joins(:candidates).where(candidates: { user: user }).count total > taken end |
Instance Method Details
#approved?(user) ⇒ Boolean
75 76 77 |
# File 'app/models/campaign.rb', line 75 def approved?(user) candidates.find_by(user: user)&.approved? end |
#candidate?(entity) ⇒ Boolean
65 66 67 |
# File 'app/models/campaign.rb', line 65 def candidate?(entity) candidates.where(id: entity.id).exists? end |
#regional? ⇒ Boolean
60 61 62 |
# File 'app/models/campaign.rb', line 60 def regional? !region.nil? end |
#user?(entity) ⇒ Boolean
70 71 72 |
# File 'app/models/campaign.rb', line 70 def user?(entity) candidates.owned_by(entity).exists? end |