Одним из подходов является преобразование activation_due_date
в часовой пояс пользователя.Как вы говорите, «моя дата оплаты не является чем-то фиксированным - это зависит от местоположения пользователя».
Чтобы сделать это в качестве области, проще всего было бы использовать функции часового пояса вашей базы данных.Это зависит от того, какую базу данных вы используете, но в PostgreSQL это будет что-то вроде: -
where('activation_due_date AT TIME ZONE ? > NOW() ', user.timezone)
Еще более простым способом будет сравнение строк
where('to_char(activation_due_date, 'YYYYMMDDHH24MISS') > ?', Time.current.in_time_zone(user.timezone).strftime('%Y%m%d%H%M%S');
В этом случае мы говорим, сколько времени на стене для пользователя, и меньше ли оно времени в базе данных (которая «хранится» в UTC).