diff --git a/README.md b/README.md index 98eb8cc0e16e98fb737c1ffc1a6fd43f89deb0c1..6abc59f2e168322676a60d233995a2b057de2d8d 100644 --- a/README.md +++ b/README.md @@ -740,10 +740,17 @@ When reporting an issue, please list the version of Geocoder you are using and a Known Issue ----------- -You cannot use the `near` scope with another scope that provides an `includes` option because the `SELECT` clause generated by `near` will overwrite it (or vice versa). Instead, try using `joins` and pass a `:select` option to the `near` scope to get the columns you want. For example: +You cannot use the `near` scope with another scope that provides an `includes` option because the `SELECT` clause generated by `near` will overwrite it (or vice versa). - # instead of City.near(...).includes(:venues) +Instead of using `includes` to reduce the number of database queries, try using `joins` with either the `:select` option or a call to `preload`. Both choices are demonstrated below: + + # Pass a :select option to the near scope to get the columns you want. + # Instead of City.near(...).includes(:venues), try: City.near("Omaha, NE", 20, :select => "cities.*, venues.*").joins(:venues) + + # This preload call will normally trigger 2 queries regardless of the number of results; one query + # on hotels, and one query on administrators. Instead of Hotel.near(...).includes(:administrator), try: + Hotel.near("London, UK", 50).joins(:administrator).preload(:administrator) If anyone has a more elegant solution to this problem I am very interested in seeing it.