🖥

Rails – ActiveRecordのメソッドチェーンで then を使って nil 対策 ( 変数の値の有無で処理分岐 )

2023/09/01に公開

問題

  • 変数の値がある時はその値で絞り込みたい
  • 変数の値が nil の時は何も絞り込みをおこないたくない

だが次のような書き方だと カラムの値が NULL のものを絞り込んでしまう

target_id = nil

User.where(flag: true).where(id: target_id)

解決

then を使って分岐させる

target_id = nil

User.where(flag: true).then do |relation|
  if target_id
    relation.where(id: target_id)
  else
    relation
  end
end

scope でも実現できるがこちらの方が手軽な書き方

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

公開日時

2023-08-09

Discussion