Ruby on Rails Wednesday, June 25, 2014

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

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/6f90f0bc-c263-4075-9c36-f2e002af882e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment