質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

1回答

1503閲覧

ransackの検索システムで複数チェックボックスを選択した場合、AND検索がうまくいかない

su_da221

総合スコア59

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

0クリップ

投稿2020/09/19 09:23

編集2020/09/19 09:42

多対多のモデルを使っています。
検索において
tags_id => 1とtags_id => 3を指定した際に該当しているはずの項目が表示できない。

_検索.html.erb

<%= f.label :tags_id, "タグ" %> <%= f.collection_check_boxes :tags_id_eq_all, @tags, :id, :name %>

school.controller.rb

def search_params # params.require(:q).permit! params.require(:q).permit(:category_id_eq) params.require(:q).permit(:name_cont) params.require(:q).permit(:tags_id_eq_all => []) end

モデル

school
category_id id name address その他もろもろ
category
id name
tag
id name

タグ以外にも名前検索、カテゴリ検索があります。
tags_id 1 AND tags_id 3
で検索をすると
ログには

SELECT "schools".* FROM "schools" LEFT OUTER JOIN "school_tags" ON "school_tags"."school_id" = "schools"."id" LEFT OUTER JOIN "tags" ON "tags"."id" = "school_tags"."tag_id" WHERE ("tags"."id" = 1 AND "tags"."id" = 3)

となっており、多分AND検索にはなっている
該当の項目がないので表示できていないのかなと思っています。

ちなみに
rails console

School.find(4) ↓ #<School id: 4, category_id: 1, name: "ごり", address: "ワシントン", created_at: "2020-09-15 10:38:23", updated_at: "2020-09-15 10:38:23", hpaddress: "nvkd", tel: "090-9182-9128", time: "12時から18時">

と出ており(これが本来該当するはずの項目)、tags_idがないのが原因なのかと思ったのですが、
School.find(4).tagsとrails consoleでうつと

#<ActiveRecord::Associations::CollectionProxy [#<Tag id: 1, name: "成犬OK", created_at: "2020-09-10 11:21:01", updated_at: "2020-09-10 11:21:01">, #<Tag id: 3, name: "予約必須", created_at: "2020-09-10 11:21:12", updated_at: "2020-09-10 11:21:12">]>

と出たので、該当するはずの項目にtags_idは保持出来ているようでした。

:tags_id_in

で検索をかけていた時は
tags_id 1 と tags_id3 どちらか含む項目は検索できていたので関係ないのではと思っています。

どのようにすればチェックしたものに全て該当する項目が表示できますか?
教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Rails ConsoleでAND検索したら結果は表示できるんでしょうか?

もし表示できた場合、クエリが間違っているというよりかは、検索結果を表示するところが間違っているのかな?と思いました。

投稿2020/09/19 21:56

s4na_penguin

総合スコア176

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問