diff --git a/app/models/user.rb b/app/models/user.rb --- a/app/models/user.rb +++ b/app/models/user.rb @@ -273,9 +273,10 @@ end end + # new feature, get list of available problem in all enabled group that the user belongs to def available_problems_in_group problem = [] - self.groups.each do |group| + self.groups.where(enabled: true).each do |group| group.problems.where(available: true).each { |p| problem << p } end problem.uniq! @@ -296,6 +297,8 @@ end end + #check if the user has the right to view that problem + #this also consider group based problem policy def can_view_problem?(problem) return true if admin? return available_problems.include? problem