-
Notifications
You must be signed in to change notification settings - Fork 378
Model Customization
The easiest way to declare gmaps4rails in your model is:
acts_as_gmappable
The following default config will be assumed:
-
:process_geocoding => true: the geocode will be performed each time the model is run through a validate method -
:validation => true: if the position of the address provided isn't found by google, an error will be displayed -
:lat => "latitude",:lng => "longitude": latitude and longitude will be saved in the columnslatitudeandlongitude -
:check_process => true,:checker => "gmaps": the status of the geocode, will be checked in a method or in db column boolean calledgmaps -
:address =>"gmaps4rails_address": will look for the defaultgmaps4rails_address
All or part of these default behaviors can be customized with the following arguments:
-
:lat: string -
:lng: string -
:process_geocoding: true/false
These are only used if process_geocoding is true:
-
:check_process: Either a Boolean (most obvious case), Symbol (in this case, it should refer to an instance method's name), or Proc. The rule is: when set to false, geocoding will be made at every save/update. -
:checker: string (only if check_process is true), could be a method or a db column boolean -
:validation: Either a Boolean (most obvious case), Symbol (in this case, it should refer to an instance method's name), or Proc. -
:msg: string, to customize the error message in validation (if activated) -
:address: string it could be a method or even a db column name. -
normalized_address: string, you can retrieve directly the address matched by google. Set here in which db column you want it to be saved. -
language: string, the language in which the results will be returned (Useful in combination with normalized_adress). -
protocol: string, "http" by default -
callback: string, if set, this will be called with the most specific result as a parameter. You can then do whatever you want with it. For example:
acts_as_gmappable :callback => :save_country
def save_country(data)
data["address_components"].each do |c|
if c["types"].include? "country"
self.country = c["long_name"]
end
end
end
You could do the following:
acts_as_gmappable :process_geocoding => false