Legal. Valeu!
Houve uma assinatura.
Uma correção no seu código:
subs = ::Stripe::Subscription.list(customer: customer.stripe_customer_id, status: 'all')[:data]
Existem 100 planos (então provavelmente mais do que isso) - talvez esse seja o problema? (Tentei com limit: 1000, mas isso não mudou nada; acho que esse é um limite da API do Stripe?)
Então, talvez se houver >100 planos, falhe? Ah, e os usuários para os quais não está falhando, estão em planos que estão nos primeiros 100.
discourse(prod)> plan = plans[:data].find { |p| p[:id] == price_id }
discourse(prod)>
=> nil
EDIT:
Sim. Se eu fizer isso:
# Pega o ID do último item
last_price_id = plans.data.last.id
# Pega os próximos 100
next_plans = ::Stripe::Price.list(
expand: ['data.product'],
limit: 100,
starting_after: last_price_id
)
então
discourse(prod)> next_plans[:data].find { |p| p[:id] == price_id }
encontra o que procura.
EDIT NOVAMENTE: next_plans.count == 8. Eu sugeri que eles excluíssem 10 planos.