It works if address and reverse_geocoded_by are in the class which I don't need (latitude and longitude comes from rest client).
To find all locates within 5 miles
Locate.near([center.latitude, center.longitude], 5)
Schema
create_table :locate do |t|
t.integer :user_id
# t.string :address
t.float :latitude
t.float :longitude
t.timestamps
end
Model Class
class Locate < ApplicationRecord
# reverse_geocoded_by :latitude, :longitude
# after_validation :reverse_geocode, unless: -> (obj) { obj.address.present? },
# if: -> (obj) { obj.latitude.present? and obj.latitude.present? and ( obj.latitude_changed? || obj.longitude_changed? ) }
end
Controller method
def near
center = @user.locate
render json: Locate.near([center.latitude, center.longitude], 5, units: :km)
end
Error:
NoMethodError (undefined method `near' for #Class:#):