通过belongs_to关系方法

时间:2015-12-16 21:34:00

标签: ruby-on-rails

我有一个模型位置,许多模型用它来存储地理类型信息。我正在使用https://github.com/alexreisner/geocoder根据位置过滤结果。我的问题是,如何在belongs_to位置调用.near方法。例如:

我有一个用户

class User < ActiveRecord::Base
  belongs_to :location
end

位置:

class Location < ActiveRecord::Base
end

我通常会从那里加入位置和查询:

User.joins(:location).where('locations.country = ""')

问题是,我无法传递哈希或字符串,我需要从Location调用一个方法,比如

# Instead of calling .near on User, I need to on Location
User.joins(:location).near('Omaha, NE, US', 20)

我不确定如何做到这一点,或者是否有可能。感谢

1 个答案:

答案 0 :(得分:0)

即使没有LocationUser定义的关系,您也可以在Location上使用User加入查询,并获取用户的ID:

users_id = Location.join('INNER JOIN users ON users.location_id = locations.id').near('Omaha, NE, US', 20).pluck('users.id')
users = User.find(users_id)