У меня есть модели ниже:
class Location < ActiveRecord::Base
has_many :location_items
has_many :items, :through=>:location_items
end
class Item < ActiveRecord::Base
has_many :location_items
has_many :locations, :through=>:location_items
end
class LocationItem < ActiveRecord::Base
belongs_to :item
belongs_to :location
end
Также у меня включен полнотекстовый поиск (из драгоценного камня) для модели элемента, я могу сделать
Item.search ('keyword') - 'search' - это область действия, предоставляемая гемом для получения всех элементов с ключевым словом, совпадающим с именем или описанием, к результату добавляется атрибут 'rank' для релевантности соответствия
У меня также есть гео-поиск (из драгоценного камня) для модели местоположения, я могу сделать
Location.near ('Toronto. ON', 100) --- 'near' - это область действия, предоставляемая гемом, чтобы получить все местоположения в пределах 100 км от Торонто, в результирующее местоположение добавляется атрибут 'distance' для расстояния от заданного местоположение - Торонто в этом примере
Итак, теперь я пытаюсь получить список объектов location_item, местоположение которых соответствует определенному данному местоположению, а элемент соответствует данному ключевому слову.
Например, выполните поиск объектов location_item, соответствующих «ключевому слову», в пределах 100 км от Торонто.
Как мне добиться этого с помощью одного запроса? а также может иметь доступ к атрибутам расстояния и ранга через связанный элемент и местоположение внутри объекта location_item.
Я не могу связать область видимости, поскольку они работают только с Item и Location, а не с LocationItem,
Например, приведенное ниже выражение не будет работать
LocationItem.joins (: элементы, местоположения) .search ('ключевое слово'). Рядом ('Торонто, ON', 100)
Надеюсь, мое описание того, что я пытаюсь сделать, имеет смысл. Есть ли у вас какие-либо идеи? Большое спасибо!