У меня есть таблица «Пользователи», таблица «Покупки» и таблица «Премиум», в которую добавляется пользователь, если он подписан на услугу «Премиум».Премиум таблица содержит идентификатор пользователя, дату, когда они были добавлены, и дату, когда они были удалены.Я хотел бы найти покупки, которые были сделаны, когда пользователь был частью услуги Premium.Я думал что-то вроде:
Purchase.joins(user: :premiums).where("purchases.date BETWEEN ? AND ?", "premiums.add_date", "premiums.remove_date")
Когда я пробую варианты этого, я получаю следующую ошибку:
ActiveRecord::StatementInvalid: PG::InvalidDatetimeFormat: ERROR: invalid input syntax for type timestamp: "premiums.add_date"
ЕслиЯ разделил его на два .where
оператора, он прекрасно работает:
Purchase.joins(user: :premiums).where("purchases.date >= premiums.add_date").where("purchases.date <= premiums.remove_date")
Что такого в операторе BETWEEN, который мешает мне использовать типичные имена столбцов?