Jsem pomocí dotazu načíst SubscriptionCart
s nejstarší authorized_at
datum od Subscription
.
Od Subscription
has_many
SubscriptionCart
Jsem filtr vozíky se stejným plan_id
jako Předplatné plan_id
. Já také použít WHERE
prohlášení pro Subscription
a SubscriptionCart
stavy stejně.
Dotaz, zdá se, že funguje dobře na konzoli, ale když jsem to dal do Předplatného působnosti a snaží se ho využít ve svých postojích jsem si:
PG::SyntaxError: ERROR: syntax error at or near "WHERE"
LINE 6: ...ubscriptions.id, subscription_carts.authorized_at WHERE "sub...
Co se děje?
dotaz:
select distinct on (s.id) s.id, sc.authorized_at as cart_authorized_at, s.*
from subscriptions s
join subscription_carts sc on sc.subscription_id = s.id and sc.plan_id = s.plan_id
where sc.status = 'processed'
and s.status IN ('authorized','in_trial', 'paused')
order by s.id, sc.authorized_at
rozsah:
scope :with_current_price_version, -> {
select("
DISTINCT ON (subscriptions.id) subscriptions.id,
subscription_carts.authorized_at as version_cart_authorized_at,
subscriptions.*
")
.joins("
INNER JOIN subscription_carts
ON subscription_carts.subscription_id = subscriptions.id
AND subscription_carts.plan_id = subscriptions.plan_id
WHERE subscription_carts.status = 'processed'
AND subscriptions.status IN ('authorized','in_trial', 'paused')
ORDER BY subscriptions.id, subscription_carts.authorized_at
")
}
EDIT: Stěhování, KDE A & ORDER BY klauzule mimo .připojit opraven problém.
aktualizováno působnosti vypadá:
scope :with_current_price_version, -> {
select("DISTINCT ON (subscriptions.id) subscriptions.id,
subscription_carts.authorized_at as version_cart_authorized_at, subscriptions.*")
.joins("INNER JOIN subscription_carts on subscription_carts.subscription_id = subscriptions.id
AND subscription_carts.plan_id = subscriptions.plan_id")
.where("subscription_carts.status = 'processed'
AND subscriptions.status IN ('authorized','in_trial', 'paused')")
.order("subscriptions.id, subscription_carts.authorized_at")
}