From 0adcc6291c005c74260d28b55ffd515966f23575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Tue, 9 Jan 2024 13:15:57 +0100 Subject: [PATCH] NoMethodError for intersect if running on Ruby 2.7.6 #1500 --- app/models/dmsf_folder.rb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index 43115147..e61dfd39 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -125,13 +125,21 @@ def self.permissions?(folder, allow_system: true, file: false) if folder.dmsf_folder_permissions.any? role_ids = User.current.roles_for_project(folder.project).map(&:id) role_permission_ids = folder.dmsf_folder_permissions.roles.map(&:object_id) - return true if role_ids.intersection(role_permission_ids).any? + if RUBY_VERSION < '3.1' # intersect? method added in Ruby 3.1, though we support 2.7 too + return true if role_ids.intersection(role_permission_ids).any? + elsif role_ids.intersect?(role_permission_ids) + return true + end principal_ids = folder.dmsf_folder_permissions.users.map(&:object_id) return true if principal_ids.include?(User.current.id) user_group_ids = User.current.groups.map(&:id) - principal_ids.intersection(user_group_ids).any? + if RUBY_VERSION < '3.1' # intersect? method added in Ruby 3.1, though we support 2.7 too + principal_ids.intersection(user_group_ids).any? + else + principal_ids.intersect?(user_group_ids) + end else DmsfFolder.permissions? folder.dmsf_folder, allow_system: allow_system, file: file end