Подсчет зарегистрированных пользователей по провинции или штату Geocoder RoR - PullRequest
1 голос
/ 25 апреля 2019

Есть ли способ подсчета пользователей в зависимости от провинции или штата (Канада или США) с devise и geocoder? Пытался зайти в Google, но не нашел решения.

user.rb:

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable


  # attr_accessible :address, :latitude, :longitude
  geocoded_by :address
  after_validation :geocode, if: ->(obj){ obj.address.present? and obj.address_changed? }


  # Mandatory fields
  validates_presence_of :first_name
  validates_presence_of :last_name
  validates_presence_of :business_name


end

Пример того, что я хочу получить: - Онтарио: 89 - Калифорния: 32 - Квебек: 382 - и т.д ...

1 Ответ

1 голос
/ 25 апреля 2019

Я не думаю, что есть родной способ сделать это.Реализуйте методы, чтобы делать то, что вы хотите:

class User < ApplicationRecord
    # your stuff...
    def city
      lat_lon = "#{latitude},#{longitude}"
      Geocoder.search(lat_lon).first
    end

    def self.grouped_by_city
      group_by{ |user| user.city }.map{|k,v| [k, v.count]}.to_h
    end
end

Тогда вы можете позвонить:

 User.all.grouped_by_city
 User.where(some_finder: some_value).grouped_by_city
...