現在、記事についているタグによる検索機能を実装しています。
開発には Rails(4.2.6)、データベースには MySQL を使用しています。
##構成について
データベースの設計は以下の通りです。
articles - id: integer - title: string - content: text articles_tags - id: integer - article_id: integer - tag_id: integer tags - id: integer - name: string
Active Record のリレーションは以下の通りです。
Ruby
1class Article < ActiveRecord::Base 2 has_many :articles_tags 3 has_many :tags, through: :articles_tags 4end 5 6class ArticlesTag < ActiveRecord::Base 7 belongs_to :article 8 belongs_to :tag 9end 10 11class Tag < ActiveRecord::Base 12 has_many :articles_tags 13 has_many :articles, through: :articles_tags 14end
##聞きたいこと
今回は掲題の通り、多対多のAND検索の方法について聞きたいです。
たとえば、[1, 2]
のような配列のパラメータが送信された場合、
Tag の ID が 1 と 2 、両方をもつような記事一覧を取得したいです。
このとき片方だけしかタグをもたない記事は除外します。
検索は以下のようにスコープを使用して実装しようと考えています。
Ruby
1class Article < ActiveRecord::Base 2 has_many :articles_tags 3 has_many :tags, through: :articles_tags 4 5 scope :search_with_tag_ids, ->(tag_ids) { 6 # この部分のコードが知りたいです 7 } 8end
何卒よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。