Ruby on Railsで商品を登録、一覧表示できるシステムを作っています。
Ransackを使って商品の絞込をしたいのですが、多対多の関係にある商品(Item)とタグ(Tag)について、タグでANDでの絞込をしたいのですが、正しく動作しません。
##テーブル構成
itemsテーブル
- id
- name
tagsテーブル
- id
- name
item_tagsテーブル(中間テーブル)
- id
- item_id
- tag_id
##該当のソースコード
/app/view/items/index.html.slim
= search_form_for @q, url: items_path do |f| - Tag.all.each do |t| .form-check.form-check-inline.mb-0 label.form-check-label = f.check_box :tags_id_eq_all, {multiple: true, class: 'form-check-input'}, t.id, nil = t.name button.btn.btn-primary.btn-block.btn-lg i.zmdi.zmdi-search.zmdi-hc-lg.pr-1 | 絞り込む
/app/controllers/items_controllers.rb
class ItemsController < ApplicationController def index @q = Item.search(params[:q]) @items = @q.result(distinct: true).includes(:item_tags, :tags) end end
###試したこと
チェックボックスを:tags_id_eq_any
に変更してOR検索にした場合、正しい挙動になります。:tags_id_eq_all
の場合、エラーなどは発生しないのですが、該当する商品が検索結果に表示されない状況です。
###補足情報
- rails 5.1.2
- ransack 1.8.3
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。