2013年2月10日日曜日

Rails3.2.11でmongoid+geocoderを使う

gem 'geocoder' を追加

rails g geocoder:config


config/initializers/geocoder.rb内を編集
|config|するのはdeplicateらしいんで、括弧内を編集するだけでよい。(最後のendはいらない)
Geocoder.configure(
  # geocoding options
  # :timeout      => 3,           # geocoding service timeout (secs)
  # :lookup       => :google,     # name of geocoding service (symbol)
  :language     => :ja,         # ISO-639 language code
  :use_https    => false       # use HTTPS for lookup requests? (if supported)
  # :http_proxy   => nil,         # HTTP proxy server (user:pass@host:port)
  # :https_proxy  => nil,         # HTTPS proxy server (user:pass@host:port)
  # :api_key      => nil,         # API key for geocoding service
  # :cache        => nil,         # cache object (must respond to #[], #[]=, and #keys)
  # :cache_prefix => "geocoder:", # prefix (string) to use for all cache keys

  # exceptions that should not be rescued by default
  # (if you want to implement custom error handling);
  # supports SocketError and TimeoutError
  # :always_raise => [],

  # calculation options
  # :units     => :mi,       # :km for kilometers or :mi for miles
  # :distances => :linear    # :spherical or :linear
  )
# end

mongoidの場合は、latitude・longitudeは不要で、coordicatesのfieldをArray型で用意する
  field :address #住所
  
  field :coordicates, type: Array
  # field :latitude, type: Float
  # field :longitude, type: Float
  
  geocoded_by :address
  reverse_geocoded_by :coordicates
  after_validation :geocode


ここまで準備ができたら、なぜかmongoidなのに、rake dbが必要。笑
rake db:mongoid:create_indexes
これで動くようになるはずです。笑