I have a feeling I am gonna get my ass kicked here, but this is my first attempt at creating real life model logic I have 3 models: Trader - https://github.com/JonleePeakman/locations/blob/ma... Service - https://github.com/JonleePeakman/locations/blob/ma... Location - https://github.com/JonleePeakman/locations/blob/ma... and my DB Schema is: https://github.com/JonleePeakman/locations/blob/ma... This is all I have at the moment and it does exactly what I want it to do. I will plan on my controller and views later but I want to pause and review on my work and could use some help as I am unsure if I am overusing callbacks especially in the Service model and what I could do otherwise. A quick overview of the plan is: A Trader has and belongs to many Locations and vice-versa, and a Trader has many Services each of which have a range. This range is the distance a trader may travel to provide the service from their central post_code e.g. a builder might travel 20 miles to build a porch but would travel 50 miles for a customer to build a full house extension. Therefore the Locations for a Trader all hinge on the maximum range of their Services. The Locations table is populated with UK postcode data with Lat/Lon coordinates and all distances and ranges are calculated using the Haversine formula. The plan is when a User visits the website they enter their post code, firstly all Traders in the Location will be identified. Then When the user clicks on a specific Trader, the Trader=>'services_in' function will be called to only show the services that the trader provides within their post code. I hope that makes sense and you have a little time to peruse the models, I could really do with having a discussion on what I have created so far to see how smelly my code is. As I say I have never done anything to this level before. much regards JL
on 2014-06-25 19:23
on 2014-06-25 20:45
Hi Jonlee, At first sight, all I have to say is that your Location model could be greatly simplified with the use of the geocoder <https://github.com/alexreisner/geocoder> gem. It provides great functionalities when dealing with GPS coordinates, especially computing distances or searching within a given area. Hope this helps :) Philippe Le mercredi 25 juin 2014 19:09:21 UTC+2, Jonlee Peakman a écrit :
on 2014-06-25 20:58
Thanks, I have seen a bit about that, does it work without an external API like Google etc?