28
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails6.1で追加されたmissingがとてもエレガント

Posted at

結論

ActiveRecordのmissingという関数を使えばこんなにエレガントになります。

# missingなし
Master.left_joins(:datas).where(datas: {id: nil})

# missingあり
Master.where.missing(:datas)

どういうこと?

missingは関連が無いデータを取得するときに使います。例えば

  • 利用されていないマスターデータの一覧を取得する(上例)
  • 所属する社員がいない部署の一覧を取得する(ex: 部署.where.missing(:社員)
  • 画像が無い記事の一覧を取得する(ex: 記事.where.missing(:画像)

どうやって利用するの?

has_one/has_many/belogs_toなどのアソシエーションが組んであれば利用できます。

なにはともあれ、missingって響きがカッコいいので多用したい。

参考

28
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?