🫶

RubyのRangeのヤバイやつ

に公開
User.where(id: ..1)
=> select * from users where users.id <= 1

User.where(id: ...1)
=> select * from users where users.id < 1

User.where(id: 1..)
=> select * from users where users.id >= 1

User.where(id: 1...)
=> select * from users where users.id >= 1 # ←⁉️🤯

..1 → <= 1、 ...1 → < 1 なのに、
1... は 1 < にならない!!

ただしArrayにして見てみると、確かに下限の方は <= のままだしこれはこういうものだとすんなり受け入れてたんですよね。

Array(1..3)
=> [1, 2, 3]

Array(1...3)
=> [1, 2]

... で含む/含まないが変わるのは上限の方だけと覚えておくと良さそ。

GLOBIS Tech

Discussion