Class: Challenge

Inherits:
ApplicationRecord show all
Includes:
AffiliatableChild, AlgoliaSearch, Avatarable, Bannerable, Feedable, Geocodable, Interestable, Linkable, Mediumable, Membership, NotificationsHelpers, RecsysHelpers, RelationHelpers, Skillable, Utils
Defined in:
app/models/challenge.rb

Instance Method Summary collapse

Methods included from Utils

#obj_type, #reindex, #sanitize, #sanitize_content, #sanitize_description

Methods included from Skillable

#update_skills

Methods included from RelationHelpers

#clappers, #claps_count, #followers, #followers_count, #reviews_count, #saves_count

Methods included from RecsysHelpers

#add_edge, #remove_edge

Methods included from NotificationsHelpers

#notif_new_follower, #notif_new_member, #notif_pending_member

Methods included from Membership

#admins, #has_privacy?, #members, #members_count, #owners, #pending_members, #users, #users_sm

Methods included from Interestable

#update_interests

Methods included from Geocodable

#make_address

Methods included from Feedable

#posts_count

Methods included from Bannerable

#banner_url, #banner_url_sm

Methods included from Avatarable

#logo_url, #logo_url_sm

Methods included from AffiliatableChild

#add_affiliation_to, #remove_affiliation_to

Instance Method Details

#accept_project(project) ⇒ Object



70
71
72
# File 'app/models/challenge.rb', line 70

def accept_project(project)
  challenges_projects.find_by(project: project)&.accepted!
end

#add_users_from_projectsObject



56
57
58
59
60
# File 'app/models/challenge.rb', line 56

def add_users_from_projects
  projects.each do |project|
    add_members_if_challenge_project_confirmed?(project)
  end
end

#all_owners_admins_membersObject



78
79
80
81
82
83
84
# File 'app/models/challenge.rb', line 78

def all_owners_admins_members
  query = super()
  projects.each do |project|
    query = query.or(project.all_owners_admins_members)
  end
  query
end


74
75
76
# File 'app/models/challenge.rb', line 74

def frontend_link
  "/challenge/#{short_title}"
end

#needs_countObject



66
67
68
# File 'app/models/challenge.rb', line 66

def needs_count
  challenges_projects.accepted_projects.includes(project: [:needs]).count(:needs)
end

#projects_countObject



62
63
64
# File 'app/models/challenge.rb', line 62

def projects_count
  Project.where(id:(challenges_projects.accepted_projects.pluck(:project_id))).where.not(status: "draft").count
end

#user_is_member?(user) ⇒ Boolean

Returns:

  • (Boolean)


86
87
88
89
90
# File 'app/models/challenge.rb', line 86

def user_is_member?(user)
  return true if super(user)

  projects.any? { |project| project.user_is_member?(user) }
end