【发布时间】:2014-09-23 07:26:45
【问题描述】:
我这里有两个相关模型:InventoryItem 和 Store。
class InventoryItem < ActiveRecord::Base
belongs_to :store
include Tire::Model::Search
include Tire::Model::Callbacks
def self.search(params)
tire.search(load: true, :per_page => 40) do
query { string params[:query], default_operator: "AND" } if params[:query].present?
end
end
end
class Store < ActiveRecord::Base
geocoded_by :address
after_validation :geocode, :if => lambda{ |obj| obj.address_changed? }
has_many :inventory_items
end
我想从当前用户附近的商店搜索inventory_items(用户也使用geocoder gem 进行地理编码)。我正在考虑的方法是以某种方式确定模型的范围,但我不确定如何实现。以下是我通常如何在控制器中查找附近商店的方法:
@stores = Store.near([current_user.latitude, current_user.longitude], current_user.distance_preference, :order => :distance)
有没有办法在我的 InventoryItem 模型上基于其关联商店是否在当前用户附近进行:local 范围?或者,有没有办法用elasticsearch实现我的目标?提前致谢!
【问题讨论】:
标签: ruby-on-rails elasticsearch tire