1

I have read in this SO post this you can combine any_of with between like this:

webshop = Webshop.first

webshop.orders.any_of(
  webshop.orders.between(:datetime_pending, [Time.zone.now-7.days, Time.zone.now]).selector, # An error is raised here.
  webshop.orders.between(:datetime,         [Time.zone.now-7.days, Time.zone.now]).selector
)

But When trying this query, using Mongoid 4, I am getting the error:

ArgumentError: wrong number of arguments (2 for 0..1).
/Users/christoffer/project/vendor/gems/ruby/2.0.0/gems/origin-1.1.0/lib/origin/selectable.rb:63:in `between'
/Users/christoffer/project/vendor/gems/ruby/2.0.0/bundler/gems/mongoid-b91705b0ded8/lib/mongoid/relations/referenced/many.rb:413:in `block in method_missing'
/Users/christoffer/project/vendor/gems/ruby/2.0.0/bundler/gems/mongoid-b91705b0ded8/lib/mongoid/scopable.rb:238:in `with_scope'
/Users/christoffer/project/vendor/gems/ruby/2.0.0/bundler/gems/mongoid-b91705b0ded8/lib/mongoid/relations/referenced/many.rb:412:in `method_missing'

What am I missing here?

Community
  • 1
  • 1
Cjoerg
  • 1,271
  • 3
  • 21
  • 63

1 Answers1

1

According to the documentation Queryable#between takes a hash (a key with a range value).

Have you tried passing that instead of an array?

webshop = Webshop.first
now = Time.zone.now
seven_days = now - 7.days
webshop_orders = webshop.orders

webshop_orders.any_of(
  webshop_orders.between(datetime_pending: seven_days..now).selector,
  webshop_orders.between(datetime:         seven_days..now).selector
)
xlembouras
  • 8,215
  • 4
  • 33
  • 42