Trader/Service/Location model pitstop

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/master/app/models/trader.rb

Service -
https://github.com/JonleePeakman/locations/blob/master/app/models/service.rb

Location -
https://github.com/JonleePeakman/locations/blob/master/app/models/location.rb

and my DB Schema is:
https://github.com/JonleePeakman/locations/blob/master/db/schema.rb

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

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 :slight_smile:

Philippe

Le mercredi 25 juin 2014 19:09:21 UTC+2, Jonlee Peakman a écrit :

Thanks, I have seen a bit about that, does it work without an external
API like Google etc?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs