У вас есть два способа решить эту синтаксическую ошибку:
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