我正在开发一个集成Stripe Billing API的Rails 5.2项目(使用stripe-ruby gem)。我创建了一个Subscription
模型,并且需要设置与Customer
模型的关联。
我要做的是拥有has_one :subscription
和belongs_to :customer
,以便调用customer.subscription
将返回该客户的唯一订阅对象。但是,为了保持记录,我想保留has_one
功能,但不知何故能够保留已取消的订阅记录(即客户可能有三个以前取消的订阅记录,但是调用{{1除非最新的订阅记录仍处于“活动状态”,否则返回customer.subscription
。
任何想法最好的方法是什么?
我能想到的一种方法是将其设置为nil
,然后设置has_many
模型方法(即:Customer
)以返回最近的方法和有效的订阅记录。这会是要走的路吗?
非常感谢任何帮助!
答案 0 :(得分:2)
作为将has_many :subscriptions
与has_one :active_subscription
结合使用的替代方法,您还可以使用association extension:
has_many :subscriptions do
def current
# logic for determining active subscription
end
end
这样做,customer.subscriptions
会给你所有这些,而customer.subscriptions.current
将是当前的。{1}}。
答案 1 :(得分:0)
是的,对has_many
使用subscriptions
关系,然后在has_one
模型的active_subscription
时间戳上订购created_at
Subscription
。
请注意,执行此操作时,您应该仅使用active_subscription
来获取有效订阅,而不是设置它。只需通过has_many
customer.subscriptions.build
方法进行设置。