У меня есть две модели, Team
и Plan
. У команды есть от одного до многих отношений с планами, где планы могут иметь много команд, и каждая команда имеет один план. Это выглядит следующим образом:Rails 4 - установка принадлежит_от отношения не работает
#Plan
has_many :teams
#Team
belongs_to :plan
Я использую Stripe для повторяющихся счетов, и я использую [webhooks][2]
, чтобы мое приложение синхронизировано с полоской. Чтобы получать события Stripe, я использую драгоценный камень [stripe_event][3]
. Когда подписки создаются, я хочу установить план для вновь созданного плана подписки. Когда я получаю событие нашивки customer.subscription.created
я сделать следующее:
events.subscribe 'customer.subscription.created' do |event|
team = Team.find_by_stripe_customer_id(event.data.object.customer)
create_subscription_for_team(team, event.data.object)
# In this methods I want to set my plan
set_team_plan(team, event.data.object.plan)
end
def set_team_plan(team, plan)
team_plan = Plan.find_by_stripe_id(plan.id)
team.update_attribute(plan_id: team_plan.id)
end
Я не получаю ошибки, что я могу видеть, но план, кажется, не обновляется. Я также пробовал:
team.plan = team_plan
team.save!
Но это дает мне тот же результат. Когда я зарегистрировался, я подтвердил, что team_plan
- это правильный план, и он не ноль.
Любые идеи о том, что я делаю неправильно?
Спасибо, да, я попробовал сохранить! (не имея '!' был тип от него здесь, я теперь обновил свой вопрос). Когда вы устанавливаете 'inverse_of', как вы предлагаете, я получаю следующее:' ActionView :: Template :: Error (Не удалось найти обратную ассоциацию для плана (: команда в Plan)): ' – Anders
@Anders My typo - используйте inverse_of: teams (множественное число) – joelparkerhenderson
На самом деле это было связано с чем-то другим. В моей модели «Team» у меня было «before_create», где я установил «План» по умолчанию. Это действие вызвано также, когда мой План создается по какой-то причине. – Anders