Как я могу передать переменную в mongoid запрос на хэш-поле - PullRequest
0 голосов
/ 26 апреля 2018

Класс Business имеет хеш-поле hours, которое выглядит следующим образом:

{
  monday: 
    {
      open_hour: 9,
      open_min: 0,
      close_hour: 17,
      close_min: 45
    }
  tuesday: 
  ...
}

Мой желаемый запрос выглядит так:

Business.where(:'hours.monday.close_hour'.lt => 23)

, который сам по себе функционален. Однако я хотел бы передать monday в качестве переменной day, т.е.

Business.where(:'hours.[day].close_hour'.lt => 23)

Есть ли хороший способ сделать это? Обратите внимание, что это часть большой цепочки запросов, которая должна возвращать объект Mongoid::Criteria.

1 Ответ

0 голосов
/ 26 апреля 2018

В конечном итоге мы придумали это:

query = { :"hours.#{day}.close_hour" => { '$lt' => 23 } } Business.where(query)

Источник: Как использовать переменную в качестве имени поля в mongodb-native findOne ()?

Спасибо!

Редактировать: Я хотел бы отметить, что пользователь 'mu слишком короткий' признал, что его можно так же легко написать так:

:"hours.#{day}.close_hour".lt => 23

, что намного ближе к нашему первоначальному замыслу.

...