2015-03-18 3 views
0

Я пытаюсь получить запрос, в котором мне нужны все свойства, чьи платежи истекли за X дней. X определяется сообществом отеля, что я прямо сейчас следующее:Динамическое число дней до сегодняшнего дня

Property.joins(:community).joins(:payments).where("payments.expiration_date = current_date + interval communities.sms_defaulting_days + ' days'") 

Который не работает, так как он не признает сообществ (я считаю, что это проблема синтаксического анализа), то ошибка, я получаю:

PG::SyntaxError: ERROR: syntax error at or near "communities" 

, который имеет смысл для меня.

То, что я пытаюсь достичь, что последняя часть запроса должен выглядеть следующим образом:

payments.expiration_date = current_date + interval '2 days' 

И я получил бы 2 из «community.sms_defaulting_days»

Еще один путь подумать об этом «expiration_date = 2.days.from_now», но у меня все еще есть та же проблема, что и я не знаю, как заставить ее работать динамически.

+0

Replace 'интервал communities.sms_defaulting_days + 'days'', как'' # {communities.sms_defaulting_days} дней :: INTERVAL' .. и дайте мне знать. –

+0

Есть '.where (" payments.expiration_date = DATE_ADD (# {current_date}, INTERVAL # {interval}) ")' все ближе к тому, чего вы пытаетесь достичь? – sebkkom

+0

@sebkomianos, что бы это было в этом случае? Мне нужно извлечь дату в зависимости от сообщества свойства. – Waclock

ответ

0

Попробуйте написать код, как:

Property.joins(:community) 
     .joins(:payments) 
     .where("payments.expiration_date = current_date + (communities.sms_defaulting_days || ' days')::interval") 
+0

Я получаю "неопределенные локальные переменные или методы" сообщества ", которые вероятно, потому, что сообщества не являются рубиновой переменной. – Waclock

+0

@Waclock Я уверен, что у вас есть db-таблица 'community'? –

+0

Да, каждое свойство имеет community_id (belongs_to: сообщества) – Waclock

Смежные вопросы