diff --git a/lib/geocoder/stores/active_record.rb b/lib/geocoder/stores/active_record.rb
index 985a0759579d25b3c4a44cadad1fb994d046a8d8..b49a4a97c891bf7af4a98f1df35d8eaff3448802 100644
--- a/lib/geocoder/stores/active_record.rb
+++ b/lib/geocoder/stores/active_record.rb
@@ -157,8 +157,10 @@ module Geocoder::Store
       ##
       # Generate the SELECT clause.
       #
-      def select_clause(columns, distance, bearing = nil)
-        if columns == :geo_only
+      def select_clause(columns, distance = nil, bearing = nil)
+        if columns == :id_only
+          return full_column_name(primary_key)
+        elsif columns == :geo_only
           clause = ""
         else
           clause = (columns || full_column_name("*")) + ", "