From 28865900e52ef51541551e6c57990b0a734944b0 Mon Sep 17 00:00:00 2001 From: Tom Levy Date: Sun, 24 Dec 2023 03:54:29 +1300 Subject: [PATCH] Fix deprecation: pass id instead of object to `.exists?` Fixes the following Rails 4.2 deprecation warning: DEPRECATION WARNING: You are passing an instance of ActiveRecord::Base to `exists?`. Please pass the id of the object by calling `.id`. See: https://guides.rubyonrails.org/4_2_release_notes.html#active-record-deprecations --- app/controllers/groups/members_controller.rb | 10 +++++----- app/controllers/groups_controller.rb | 2 +- app/controllers/problem_sets_controller.rb | 2 +- app/controllers/user_controller.rb | 2 +- app/models/group.rb | 2 +- app/views/layouts/group.html.erb | 2 +- spec/features/invitation_and_join_request_spec.rb | 10 +++++----- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/controllers/groups/members_controller.rb b/app/controllers/groups/members_controller.rb index c8e5e43d..18b3ee77 100644 --- a/app/controllers/groups/members_controller.rb +++ b/app/controllers/groups/members_controller.rb @@ -5,9 +5,9 @@ class Groups::MembersController < ApplicationController def load_group_request @group = Group.find(params[:id]) @request = Request.find(params[:request_id]) - if @group.invitations.exists?(@request) && @request.pending? + if @group.invitations.exists?(@request.id) && @request.pending? @request_type = :invitation - elsif @group.join_requests.exists?(@request) && @request.pending? + elsif @group.join_requests.exists?(@request.id) && @request.pending? @request_type = :join_request else redirect_to(@group, :alert => 'Invalid request operation') @@ -27,7 +27,7 @@ def add @user = User.find_by_username(params[:username]) if @user.nil? redirect_to(members_group_path(@group), :alert => "No user found with username \"#{params[:username]}\"") - elsif @group.members.exists?(@user) + elsif @group.members.exists?(@user.id) redirect_to(members_group_path(@group), :alert => "#{@user.username} is already a member of this group") else @group.join(@user) @@ -63,7 +63,7 @@ def leave def apply @group = Group.find(params[:id]) authorize @group, :apply? - if @group.members.exists?(current_user) + if @group.members.exists?(current_user.id) redirect_to(@group, :alert => "You are already a member of this group") elsif invitation = @group.invitations.pending.where(:target_id => @user).first invitation.accept! @@ -83,7 +83,7 @@ def invites @user = User.find_by_username(params[:username]) if @user.nil? redirect_to(invites_members_group_path(@group), :alert => "No user found with username \"#{params[:username]}\"") - elsif @group.members.exists?(@user) + elsif @group.members.exists?(@user.id) redirect_to(invites_members_group_path(@group), :alert => "#{@user.username} is already a member of this group") elsif join_request = @group.join_requests.pending.where(:subject_id => @user).first join_request.accept! diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 217cd87b..dc6c1118 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -14,7 +14,7 @@ def add_contest authorize @group, :update? @contest = Contest.find(params[:contest_id]) authorize @contest, :use? - if @group.contests.exists?(@contest) + if @group.contests.exists?(@contest.id) redirect_to(@contest, :alert => "This group already has access to this contest") return end diff --git a/app/controllers/problem_sets_controller.rb b/app/controllers/problem_sets_controller.rb index fd43654a..f2dc6a63 100644 --- a/app/controllers/problem_sets_controller.rb +++ b/app/controllers/problem_sets_controller.rb @@ -13,7 +13,7 @@ def add_problem # unused authorize @problem_set, :update? problem = Problem.find(params[:id]) # note switched params - TODO: fix form authorize problem, :use? - if @problem_set.problems.exists?(problem) + if @problem_set.problems.exists?(problem.id) redirect_to(problem, :alert => "This problem set already contains this problem") return end diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 390c86fb..6bbb1673 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -53,7 +53,7 @@ def add_role authorize @user, :update? role = Role.find(params[:user][:role_ids]) authorize role, :grant? - if @user.roles.exists?(role) + if @user.roles.exists?(role.id) redirect_to(@user, :alert => "This user already has this role") return end diff --git a/app/models/group.rb b/app/models/group.rb index 8f8a4aa3..20cd9fb3 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -32,7 +32,7 @@ class Group < ActiveRecord::Base 3 => [:private,'Membership is by private invitation'] def join(current_user) - if self.members.exists?(current_user) + if self.members.exists?(current_user.id) false else self.members.push(current_user) diff --git a/app/views/layouts/group.html.erb b/app/views/layouts/group.html.erb index 9c5295b0..d463d4df 100644 --- a/app/views/layouts/group.html.erb +++ b/app/views/layouts/group.html.erb @@ -1,7 +1,7 @@ <% content_for :title, @group.name %> <% toolbox_push :edit, edit_group_path(@group) if policy(@group).update? %> <% toolbox_push :delete, @group if policy(@group).destroy? %> -<% if @group.members.exists?(current_user) %> +<% if @group.members.exists?(current_user.id) %> <% toolbox_push :leave, leave_group_path(@group) if policy(@group).leave? %> <% elsif policy(@group).join? %> <%= toolbox_push :join, join_group_path(@group) %> diff --git a/spec/features/invitation_and_join_request_spec.rb b/spec/features/invitation_and_join_request_spec.rb index 68b36780..7eb4733c 100644 --- a/spec/features/invitation_and_join_request_spec.rb +++ b/spec/features/invitation_and_join_request_spec.rb @@ -15,7 +15,7 @@ @invitation = @group.invitations.pending.where(:target_id => users(:user)).first - expect(@group.members.exists?(users(:user))).to be false + expect(@group.members.exists?(users(:user).id)).to be false login_as users(:user), :scope => :user visit accounts_requests_path @@ -26,7 +26,7 @@ end end.to change{ @group.invitations.pending.count }.by(-1) - expect(@group.members.exists?(users(:user))).to be true + expect(@group.members.exists?(users(:user).id)).to be true end scenario 'group member invites a user and cancels the invitation' do @@ -58,7 +58,7 @@ apply_link = find :xpath, "//a[@href = '#{apply_group_path(@group)}']" expect { apply_link.click }.to change{ @group.join_requests.pending.count }.by(1) - expect(@group.members.exists?(users(:user))).to be false + expect(@group.members.exists?(users(:user).id)).to be false @join_request = @group.join_requests.pending.where(:subject_id => users(:user)).first login_as users(:organiser) @@ -66,7 +66,7 @@ accept_link = find :xpath, "//a[@href = '#{accept_members_group_path(@group, @join_request)}']" expect{ accept_link.click }.to change{ @group.join_requests.pending.count }.by(-1) - expect(@group.members.exists?(users(:user))).to be true + expect(@group.members.exists?(users(:user).id)).to be true end scenario 'user applies to join group, and group owner rejects join request' do @@ -84,6 +84,6 @@ reject_link = find :xpath, "//a[@href = '#{reject_members_group_path(@group, @join_request)}']" expect{ reject_link.click }.to change{ @group.join_requests.pending.count }.by(-1) - expect(@group.members.exists?(users(:user))).to be false + expect(@group.members.exists?(users(:user).id)).to be false end end