1

I need to achieve something like:

queryable.any_of(
      between(:average_nightly_min_price,  [10,100]),
      between(:average_nightly_max_price,  [110,1100])
  )

is it possible using the combination of any_of and between. Or any other alternatives?

Muntasim
  • 6,689
  • 3
  • 46
  • 69

2 Answers2

1
queryable.any_of(
  queryable.between(:average_nightly_min_price,  [10,100]).selector,
  queryable.between(:average_nightly_max_price,  [110,1100]).selector
)

It does not work if the queryable is embeded.

For ruby versions prior 2.0:

queryable.any_of(
      queryable.between(average_nightly_min_price => [10,100]).selector,
      queryable.between(average_nightly_max_price => [110,1100]).selector
    )
Sharvy Ahmed
  • 7,247
  • 1
  • 33
  • 46
  • When trying this, using Mongoid 4, I am getting the error `ArgumentError: wrong number of arguments (2 for 0..1)`. My query is `Gift.any_of(Gift.between(:gift_units_count, [0,1]).selector, Gift.between(:gift_units_count, [10,100]).selector)` – Cjoerg Jun 18 '14 at 08:20
0

I also got an ArgumentError (like @christofferjoergensen), but with mongoid 3.1.5

Using the hashrocket syntax instead of passing two arguments solved it:

queryable.any_of(
  queryable.between(:average_nightly_min_price => [10,100]).selector,
  queryable.between(:average_nightly_max_price => [110,1100]).selector
)
Robin
  • 866
  • 7
  • 19