@@ -1061,21 +1061,26 @@ Use ranges instead of defining comparative conditions using a template for scala
1061
1061
[source,ruby]
1062
1062
----
1063
1063
# bad
1064
- User.where("created_at > ?", 30.days.ago).where("created_at < ?", 7.days.ago)
1065
- User.where("created_at > ? AND created_at < ?", 30.days.ago, 7.days.ago)
1066
- User.where("created_at > :start AND created_at < end", start: 30.days.ago, end: 7.days.ago)
1064
+ User.where("created_at >= ?", 30.days.ago).where("created_at <= ?", 7.days.ago)
1065
+ User.where("created_at >= ? AND created_at <= ?", 30.days.ago, 7.days.ago)
1066
+ User.where("created_at >= :start AND created_at <= : end", start: 30.days.ago, end: 7.days.ago)
1067
1067
1068
1068
# good
1069
1069
User.where(created_at: 30.days.ago..7.days.ago)
1070
1070
1071
1071
# bad
1072
- User.where("created_at > ?", 7.days.ago)
1072
+ User.where("created_at >= ?", 7.days.ago)
1073
1073
1074
1074
# good
1075
1075
User.where(created_at: 7.days.ago..)
1076
1076
1077
- # okish - there is no range syntax that would denote inclusion on one end and
1078
- # exclusion on another.
1077
+ # note - ranges are inclusive or exclusive of their ending, not beginning
1078
+ User.where(created_at: 7.days.ago..) # produces >=
1079
+ User.where(created_at: 7.days.ago...) # also produces >=
1080
+ User.where(created_at: ..7.days.ago) # inclusive: produces <=
1081
+ User.where(created_at: ...7.days.ago) # exclusive: produces <
1082
+
1083
+ # okish - there is no range syntax that would denote exclusion at the beginning of the range
1079
1084
Customer.where("purchases_count > :min AND purchases_count <= :max", min: 0, max: 5)
1080
1085
----
1081
1086
0 commit comments