ruby on rails sql - объединяет родителя для поиска по родительским данным - PullRequest
1 голос
/ 06 ноября 2019

Событие имеет много рабочих мест.

Как мне найти все задания, относящиеся к событию, которое было создано_ в конкретный месяц?

Я пробовал это, и синтаксис выглядит хорошо для меня

@jobs = Job.joins(:event)
           .where(events: {"starts_at BETWEEN ? AND ?", Time.now.beginning_of_month, Time.now.end_of_month})
           .where(member_id: @member)`

но выдает ошибку:

rec

1 Ответ

1 голос
/ 06 ноября 2019

У вас есть два способа решить эту синтаксическую ошибку:

Job.joins(:event)
   .where("events.starts_at BETWEEN ? AND ?", Time.now.beginning_of_month, Time.now.end_of_month)
   .where(member_id: @member)

Job.joins(:event)
   .where(events: { starts_at: Time.now.beginning_of_month..Time.now.end_of_month })
   .where(member_id: @member)

Один из них - использовать «строковый путь». За именем таблицы следуют имя столбца и оператор, связывающий даты начала и окончания.

Другой способ - использовать аргументы хэширования. Сначала передайте имя таблицы в качестве хеш-ключа, содержащего столбец, в котором значение представляет собой диапазон между датой начала и конца.


Хотя, если вы получаете весь текущий месяц, вы можете использовать all_month за это:

(Time.now.beginning_of_month..Time.now.end_of_month) == Time.now.all_month 
# true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...