1
我有两个模型,Team
和Plan
。团队与计划有一对多的关系,计划可以有很多团队,每个团队都有一个计划。它看起来像这样:Rails 4 - 设置belongs_to关系不起作用
#Plan
has_many :teams
#Team
belongs_to :plan
我使用Stripe对于定期结算,以及我使用[webhooks][2]
,以保持我的应用程序与条纹同步。要接收条纹事件,我正在使用gem [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(无法找到计划的反向关联(:在团队中)):' – Anders 2014-11-23 21:31:42
@Anders我的错字 - 使用inverse_of:teams(复数) – joelparkerhenderson 2014-11-23 21:41:02
其实它与别的东西有关系。在我的Team模型中,我有一个'before_create',我在那里设置了一个默认的'Plan'。当我的计划由于某种原因而被创建时,这个动作也被调用。 – Anders 2014-11-28 07:00:55