私は、pg_searchとモデル上の他の2つのフィールドを使用したテキスト検索のロジックをすでに備えているRubyonRailsアプリケーションに取り組んでいます。ロジックは、検索結果から行の「配列」を作成します。技術的にはこれは配列ではないので、これの実際の名前は覚えていません。選択した行のインスタンス変数です。2つのモデルから検索条件を追加したいと思います。私のデータベースはPostgreSQLです。
3つのモデル定義すべてのサブセットを次に示します。
MediaLibrary:name、media_creator_id、media_type_id(現在の検索で使用されているフィールド。多くのmedia_topicsがあり、多くのmedia_targetsがあります)
MediaTopic:media_library_id、topic_id(topic_idを検索したい; media_libraryに属している;検索されているtopic_idはトピックモデル(id、name)から来ている)
MediaTarget:media_library_id、target_id(target_idを検索したい、media_libraryに属している、検索されているtarget_idはターゲットモデル(id、name)からのもの)
トピックとターゲットの両方が他の3つの検索条件と一緒に検索されている場合、私はこのようなことができるはずだと思っています。ビューにTopic.nameとTarget.nameを表示できるように、結果にtopic_idとtarget_idも含める必要があります。
@media_libraries = MediaLibrary.text_search(params[:query]).where("media_creator_id = ? AND media_type_id = ?", params[:media_creator_id].to_i, params[:media_type_id].to_i).joins(:media_topics.where("media_library_id = ? and topic_id = ?", id_from_media_library_row, params[:topic_id].to_i).joins(:media_targets.where("media_library_id = ? and target_id = ?", id_from_media_library_row, params[:target_id].to_i)
postgresql.orgとStackOverflowを検索しましたが、RubyonRailsを使用して3つのテーブルを結合しているものは見つかりませんでした。