【发布时间】:2018-05-18 23:35:34
【问题描述】:
我正在开发一个集成了 Stripe Billing API(使用 stripe-ruby gem)的 Rails 5.2 项目。我创建了一个Subscription 模型,还需要建立与Customer 模型的关联。
我要做的是拥有has_one :subscription 和belongs_to :customer,这样调用customer.subscription 将返回该客户的唯一订阅对象。但是,为了保存记录,我想保留 has_one 的功能,但不知何故能够保留取消的订阅记录(即客户可能有三个以前取消的订阅记录,但调用 customer.subscription 返回 @ 987654329@ 除非最新的订阅记录仍处于“活动状态”)。
任何想法最好的方法是什么?
我能想到的一种方法是将其设置为has_many,然后设置Customer 模型方法(即:customer.subscription)以返回一条最近且活动的订阅记录。会是这样吗?
任何帮助将不胜感激!
【问题讨论】:
-
“我能想到的一种方法是将其设置为 has_many” - 我喜欢你的方式
-
定义订阅是有效还是取消的逻辑是什么?
-
目前,我使用的是
self.subscriptions.where(status: :active).last,虽然我认为它可以改进..:status是一个枚举值,包括:active和:canceled。 -
如果是
enum它有一个范围,所以subscriptions.active.last是一样的。
标签: ruby-on-rails ruby activerecord stripe-payments