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
#clappers, #claps_count, #followers, #followers_count, #reviews_count, #saves_count
#add_edge, #remove_edge
#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
#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
#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_projects ⇒ Object
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_members ⇒ Object
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
|
#frontend_link ⇒ Object
74
75
76
|
# File 'app/models/challenge.rb', line 74
def frontend_link
"/challenge/#{short_title}"
end
|
#needs_count ⇒ Object
66
67
68
|
# File 'app/models/challenge.rb', line 66
def needs_count
challenges_projects.accepted_projects.includes(project: [:needs]).count(:needs)
end
|
#projects_count ⇒ Object
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
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
|