diff options
author | Josh Goodall <inopinatus@inopinatus.org> | 2019-07-17 15:18:54 +1000 |
---|---|---|
committer | Josh Goodall <inopinatus@inopinatus.org> | 2019-07-17 16:11:57 +1000 |
commit | b19150448bcf65362c34b5a741ce162cd2b79216 (patch) | |
tree | 19eac18ee91b8ac284163b79df74af5d25c7d22b /activerecord/test | |
parent | 32e5f9049c3ef626c9ba7b643c06b09b1ca8f6c1 (diff) | |
download | rails-b19150448bcf65362c34b5a741ce162cd2b79216.tar.gz rails-b19150448bcf65362c34b5a741ce162cd2b79216.tar.bz2 rails-b19150448bcf65362c34b5a741ce162cd2b79216.zip |
Support beginless ranges in hash conditions.
Ruby 2.7 introduces beginless ranges (..value and ...value) and as with
endless ranges we can turn these into inequalities, enabling expressions
such as
Order.where(created_at: ..1.year.ago)
User.where(karma: ...0)
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/arel/attributes/attribute_test.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/activerecord/test/cases/arel/attributes/attribute_test.rb b/activerecord/test/cases/arel/attributes/attribute_test.rb index c7bd0a053b..7ebb90c6fd 100644 --- a/activerecord/test/cases/arel/attributes/attribute_test.rb +++ b/activerecord/test/cases/arel/attributes/attribute_test.rb @@ -638,6 +638,18 @@ module Arel ) end + if Gem::Version.new("2.7.0") <= Gem::Version.new(RUBY_VERSION) + it "can be constructed with a range implicitly starting at Infinity" do + attribute = Attribute.new nil, nil + node = attribute.between(eval("..0")) # eval for backwards compatibility + + node.must_equal Nodes::LessThanOrEqual.new( + attribute, + Nodes::Casted.new(0, attribute) + ) + end + end + if Gem::Version.new("2.6.0") <= Gem::Version.new(RUBY_VERSION) it "can be constructed with a range implicitly ending at Infinity" do attribute = Attribute.new nil, nil @@ -839,6 +851,18 @@ module Arel ) end + if Gem::Version.new("2.7.0") <= Gem::Version.new(RUBY_VERSION) + it "can be constructed with a range implicitly starting at Infinity" do + attribute = Attribute.new nil, nil + node = attribute.not_between(eval("..0")) # eval for backwards compatibility + + node.must_equal Nodes::GreaterThan.new( + attribute, + Nodes::Casted.new(0, attribute) + ) + end + end + if Gem::Version.new("2.6.0") <= Gem::Version.new(RUBY_VERSION) it "can be constructed with a range implicitly ending at Infinity" do attribute = Attribute.new nil, nil |