From 73e179518b8799981e4bfcb1989a3abd8f1df2fb Mon Sep 17 00:00:00 2001 From: Michael Yankovski Date: Thu, 23 Jan 2014 19:52:10 -0500 Subject: [PATCH] This avoids running a big SQL query which could potentially return a large number of rows. All we need to check for is existance of AT LEAST one record. This can be done much faster with LIMIT 1. --- lib/rolify/adapters/active_record/role_adapter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rolify/adapters/active_record/role_adapter.rb b/lib/rolify/adapters/active_record/role_adapter.rb index 6654f3e0..a0a9e6e6 100644 --- a/lib/rolify/adapters/active_record/role_adapter.rb +++ b/lib/rolify/adapters/active_record/role_adapter.rb @@ -24,7 +24,7 @@ def remove(relation, role_name, resource = nil) if roles relation.roles.delete(roles) roles.each do |role| - role.destroy if role.send(ActiveSupport::Inflector.demodulize(user_class).tableize.to_sym).empty? + role.destroy if role.send(ActiveSupport::Inflector.demodulize(user_class).tableize.to_sym).limit(1).empty? end end roles