Получение количества лайков для формы поиска

#search #ruby-on-rails-5

#Поиск #ruby-on-rails-5

Вопрос:

Я борюсь с проблемой, упомянутой в названии, вот моя ситуация: у меня есть база данных под названием Picture witch has_many Relations. Эти отношения могут иметь значение 1 (нравится) или -1 (не нравится), поэтому с помощью чего-то вроде Picture.find(1).relationships.where(значение: 1).count я мог бы получить количество лайков для изображения с идентификатором 1, например.

Я использую простой поиск на основе модели, чтобы найти конкретные изображения. К сожалению, я не понимаю, как должна выглядеть строка, если я хочу найти все картинки с X количеством лайков или больше.

 class Search < ApplicationRecord

    def search_albums
        pics = Picture.all

        pics = pics.where("title LIKE ?", "%#{name}%") if name.present?
        pics = pics.joins(:tags).where("name LIKE ?", tag) if tag.present?
        pics = pics. ... if min_likes.present?

        return pics
    end
  

конец

Ответ №1:

Хорошо, возможно, не лучшее решение, но оно работает:

     if min_likes.present?
        stack=[]
        pics.each do |pic|
            stack.push(pic) if (pic.relationships.where(value: 1).count >= min_likes)
        end
        pics = stack
    end