按省或州地理编码器 RoR 计算注册用户数



有没有办法根据用户的省或州(加拿大或美国(计算用户devisegeocoder?尝试谷歌,但没有找到解决方案。

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-等。。。

我认为没有原生方法可以做到这一点。实现方法以执行所需的操作:

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

最新更新