Я пытаюсь создать функцию поиска для моего приложения и сталкиваюсь с некоторыми проблемами, связанными с возможностью поиска ассоциации has_many.Я хочу, чтобы он был настроен так, чтобы пользователь видел только те элементы, к которым у него есть доступ.
В моей модели пользователя у меня есть:
class User < ApplicationRecord
searchkick
has_many :items, -> (user) { unscope(:where).where("(consumer_type = ? and consumer_id = ?))", 'User', user.id) }, fully_load: false, dependent: :destroy
# not sure if this is helpful, was messing around with this
def search_data
{
name: items.name
}
end
end
Тогда в моей модели элементов у меня есть:
class Item < ApplicationRecord
belongs_to :consumable, polymorphic: true
belongs_to :consumer, polymorphic: true
end
Тогда у меня есть еще две модели, "Книга" и "Камера", которые принадлежат Предмету.Мне нужно иметь возможность запускать запрос в моем контроллере, например:
@results = current_user.items.search('Query')
..., чтобы он возвращал результаты как Книги, так и камеры, которые соответствуют поисковому запросу.Я прочитал раздел Персонализированные результаты в документах Searchkick, но не смог заставить его работать вообще.Любые полезные советы, или кто-нибудь достиг результатов, подобных определенному для конкретного пользователя?