У меня есть две подходящие модели здесь: InventoryItem
и Store
.Модель модели Rails на основе соответствующей модели
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 из магазинов, которые находятся рядом с текущим пользователем (Пользователь также привязан к местности с помощью геокодера камня). Подход, который я рассматриваю, заключается в том, чтобы каким-то образом охватить модель, но я не уверен, как ее реализовать. Вот как я найти близлежащие магазины в моих контроллерах типично:
@stores = Store.near([current_user.latitude, current_user.longitude], current_user.distance_preference, :order => :distance)
Есть ли способ сделать :local
рамки на моей InventoryItem модели какой-то образом в зависимости от того связанного с ним магазин рядом с текущим пользователем? В качестве альтернативы, есть ли способ достичь моей цели с помощью elasticsearch? Заранее спасибо!
Спасибо, протестированы обе области, которые вы предложили, и они работают. Также тестировали их в совокупности, как последняя строка вашего ответа. К сожалению, мои поисковые запросы не охвачены областью, но это еще одна проблема, связанная с библиотекой поиска. – settheline