When you use Ruby 2.7.0's new beginless range feature in a hash argument to 
`.where` the results it does not match the behavior of using 

irb(main):030:0> Post.where(id: Float::INFINITY..3)
  Post Load (0.4ms)  SELECT "posts".* FROM "posts" WHERE "posts"."id" <= $1 
LIMIT $2  [["id", 3], ["LIMIT", 11]]

irb(main):031:0> Post.where(id: ..3)
  Post Load (0.4ms)  SELECT "posts".* FROM "posts" WHERE "posts"."id" 
BETWEEN $1 AND $2 LIMIT $3  [["id", nil], ["id", 3], ["LIMIT", 11]]
=> #<ActiveRecord::Relation []>

Neither does it match the behavior of endless ranges which where introduced 
in 2.6.0.

irb(main):032:0> Post.where(id: 3..)
  Post Load (0.3ms)  SELECT "posts".* FROM "posts" WHERE "posts"."id" >= $1 
LIMIT $2  [["id", 3], ["LIMIT", 11]]
=> #<ActiveRecord::Relation []>

On a beginless range begin is nil, on endless end is nil.

I'm trying to look into this and what could actually be done about it. I'm 
a bit puzzled at why the endless range works as RangeHandler just lops off 
the begin and end and passes it to:  


Which checks if the value is infinite.

Where along in the chain of RangeHandler -> QueryAttribute -> 
ActiveModel::Attribute should this be handled? 

You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 

Reply via email to