Merge branch 'improve_speed_policies'

This commit is contained in:
Sebastian Serth
2021-01-23 12:18:45 +01:00
5 changed files with 11 additions and 8 deletions

View File

@ -11,6 +11,10 @@ class StudyGroup < ApplicationRecord
external_users + internal_users
end
def user_count
external_users.count + internal_users.count
end
def to_s
if name.blank?
"StudyGroup " + id.to_s

View File

@ -31,20 +31,19 @@ class ApplicationPolicy
study_group = @record.study_group
return false if study_group.blank?
users_in_same_study_group = study_group.users
study_groups = [study_group]
elsif @record.respond_to? :user # e.g. exercise
# ToDo: Add role to study_group_membership and use for check
study_groups = @record.user.study_groups
users_in_same_study_group = study_groups.collect(&:users).flatten
elsif @record.respond_to? :users # e.g. study_group
users_in_same_study_group = @record.users
study_groups = [@record]
elsif @record.respond_to? :study_groups # e.g. user
study_groups = @record.study_groups
users_in_same_study_group = study_groups.collect(&:users).flatten
else
return false
end
users_in_same_study_group.include? @user
@user.study_groups.any?{|i| study_groups.include?(i) }
end
private :everyone_in_study_group

View File

@ -4,7 +4,7 @@ class StudyGroupPolicy < AdminOnlyPolicy
end
[:show?, :destroy?, :edit?, :update?, :stream_la?].each do |action|
define_method(action) { admin? || @user.teacher? && @record.present? && @record.users.include?(@user) }
define_method(action) { admin? || @user.teacher? && @record.present? && @user.study_groups.exists?(@record.id) }
end
class Scope < Scope

View File

@ -25,7 +25,7 @@ h1 = StudyGroup.model_name.human(count: 2)
td
code = group.external_id
td = link_to_if(policy(group.consumer).show?, group.consumer, group.consumer)
td = group.users.count
td = group.user_count
td = link_to(t('shared.show'), group) if policy(group).show?
td = link_to(t('shared.edit'), edit_study_group_path(group)) if policy(group).edit?
td = link_to(t('shared.destroy'), group, data: {confirm: t('shared.confirm_destroy')}, method: :delete) if policy(group).destroy?

View File

@ -7,7 +7,7 @@ h1
= row(label: 'study_group.external_id') do
code = @study_group.external_id
= row(label: 'study_group.consumer', value: link_to_if(policy(@study_group).show?, @study_group.consumer, @study_group.consumer))
= row(label: 'study_group.member_count', value: @study_group.users.count)
= row(label: 'study_group.member_count', value: @study_group.user_count)
h2.mt-4 = t('activerecord.attributes.study_group.members')