#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