LoginSignup
27
27

More than 5 years have passed since last update.

[Rails] ActiveRecordの範囲指定に2点ドット(..)と3点ドット(...)を適切に使う

Posted at

2点ドットの場合

Post.where(id: 1..3)
=> "SELECT "posts".* FROM "posts" WHERE "posts"."id" BETWEEN 1 AND 3"

between句になります。これは1と3の両端を含みます。

3点ドットの場合

Post.where(id: 1...3)
=> "SELECT "posts".* FROM "posts" WHERE "posts"."id" >= 1 AND "posts"."id" < 3)

1を含み3を含まないSQLが生成されます。あら便利。

どう使う?

問題になるのはcreated_atなどの連続値における範囲指定で、2点ドットの両端を含むデータ取得だと思わぬところでダブルカウントしてしまう可能性があります。
離散値を使う時には2点ドット(..)、連続値を使う時には3点ドット(...)で範囲指定をするのが便利ですね。

27
27
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
27
27