diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb
index 18613662615fb61a09791a07c33ff7c0551bcc03..a16d437ac1feb175cba36dd3e9f2c6523a8ffed7 100644
--- a/test/unit/user_test.rb
+++ b/test/unit/user_test.rb
@@ -128,8 +128,8 @@ class UserTest < ActiveSupport::TestCase
     red.grant_access!(blue => :spy)
     red.add_contact!(blue)
 
-    accessible = User.with_access(blue => :spy).friends_or_peers_of(blue)
-    assert_equal users(:red), accessible.first
+    with_access = User.with_access(blue => :spy).friends_or_peers_of(blue)
+    assert_equal ['red'], with_access.all.map(&:login)
   end
 
 
diff --git a/vendor/crabgrass_plugins/castle_gates/lib/castle_gates/castle/class_methods.rb b/vendor/crabgrass_plugins/castle_gates/lib/castle_gates/castle/class_methods.rb
index c1ee6e1738e77d7bbb368565e7ce787eed337f5b..1a09572d329b2b30653c98d29fe64e8e391d5639 100644
--- a/vendor/crabgrass_plugins/castle_gates/lib/castle_gates/castle/class_methods.rb
+++ b/vendor/crabgrass_plugins/castle_gates/lib/castle_gates/castle/class_methods.rb
@@ -16,7 +16,11 @@ module ClassMethods
   def subselect_for_holder_and_gates(holder, gate_names)
     gate_names = [gate_names] unless gate_names.is_a? Array
     bits = gate_set.bits(gate_names)
-    Key.for_holder(holder).with_gate_bits(bits).select(:castle_id).to_sql
+    Key.for_holder(holder).
+      with_gate_bits(bits).
+      where(:castle_type => self.base_class.sti_name).
+      select(:castle_id).
+      to_sql
   end
 
   ##