| @@ -0,0 +1,26 @@ | |||||
| class Post | |||||
| include MongoMapper::Document | |||||
| key :title, String | |||||
| key :url, String | |||||
| key :author, String | |||||
| key :summary, String | |||||
| key :content, String | |||||
| key :published, Time | |||||
| key :loc, Hash # { lng, lat } | |||||
| timestamps! | |||||
| ensure_index [[:loc, '2d']] | |||||
| belongs_to :feed | |||||
| EARTH_RADIUS_M = 6378000 | |||||
| def self.near(lat, lng, radius_m) | |||||
| all( | |||||
| :loc => { | |||||
| '$nearSphere' => [ lng, lat ], | |||||
| '$maxDistance' => radius_m / EARTH_RADIUS_M | |||||
| }) | |||||
| end | |||||
| end | |||||