Я пытаюсь найти модель элемента с фильтром, названным жанрами, которые связаны через has_many через.Записи фильтра рельсов has_many через
Моя проблема в том, когда я выбираю два жанра или более, он также выбирает записи, которые содержат только один жанр.
Пример: Существует два жанра «Действие и приключение». Запись A имеет жанр Action и Record B имеет оба жанра. Выбирая оба жанра checkboxs на мой взгляд, записи, возвращаемые Rails включает как запись A & В то время как он должен был лишь записи Б.
Это мое заявление фильтра под контроллер
//This is under controller
@item = Item.includes(:genres).where('genres.id' => params['genre_ids'])
// This is under my view
<%= simple_form_for Item.new, :method => :get, url: search_path do |f| %>
<% Genre.all.each do |sc| %>
<div>
<label>
<%= check_box_tag 'genre_ids[]',sc.id %>
<span style="font-weight:normal;"><%= sc.name %> </span>
</label>
</div>
<% end %>
<% end %>
Я не могу проверить код прямо сейчас, но для будущих ссылок о SQL, (я использую PostgresSQL), где я могу прочитать об этих общих выражениях, которые обычно используются для фильтрации записей? – Wraithseeker
Что вы подразумеваете под «общими выражениями»? Это всего лишь немного логики - поскольку в результате вы получаете запись по жанру (да, по жанру, а не по элементу), вы группируете их по идентификатору элемента, а затем удаляете число с количеством записей меньше, чем количество идентификаторов жанра вы предоставили. Таким образом, вы получаете записи только с точным набором жанров. –