Madogiwa Blog

主に技術系の学習メモに使っていきます。

RubyonRails:IN句を使った取得条件の指定(自分とフォロー済ユーザーの投稿取得)について

自分の投稿とフォローしているユーザの投稿をトップページで表示したかったけど、RailsでどうやってSQLのIN句のような形の条件指定でハマったので、メモ。

指定したかった条件

下記を含んだ投稿の取得

  • 自分自身の投稿
  • フォローしているユーザーの投稿

対応方法

Model.find(カラム名: 配列)を使えばOK

実際のコード

  def self.followed_users_and_my_topics(current_user)
    # フォロー済ユーザーのidの取得
    followed_ids = current_user.followed_users.map{ |user| user.id }
    # フォロー済ユーザーidと自分自身のユーザーidの含んだ配列の作成
    ids = [current_user.id,followed_ids].flatten
    # 自分自身とフォロー済ユーザーの投稿を取得
    Topic.where(user_id: ids)
  end

参考

qiita.com