一致地添加和减去X个月

时间:2014-01-25 16:57:04

标签: ruby-on-rails ruby-on-rails-3 date

我有一个支持模型,代表用户可以在我们的应用中购买的支持量。它有一个starts_at和ends_at属性,以及一个表示支持总月数的“金额”。为了跟踪用户的支持何时到期,我们在用户模型上有一个名为“support_ends_at”的属性。

我们推出了支持赠送功能,允许用户将剩余支持转移给其他用户。但是,我似乎遇到了这个问题,如以下场景中所强调的那样:

  • User1购买一个6个月的支持。今天是2014年1月25日,所以他们的支持现在于2014年7月25日结束。
  • User1购买第二个6个月支持赠送给朋友。他们的支持过去将于2014年7月25日结束,现在将于2015年1月25日结束。
  • User1向User2赠送他们的第二个6个月支持。由于使用了一点支持,因此支持#ends_at和Time.now之间的差异用于获得剩余的支持量。从User1中减去此余数并将其提供给User2。
  • User1的support_ends_at属性现在设置为2014年7月28日。他们以某种方式获得了额外3天的支持。

这似乎与不是每个月都有相同天数的事实有关。因此,如果从原始支持用户1中获取余数,则减去余数将获得不同的数量。

我看过this question on StackOverflow,我发现这是一种故意行为。我想知道,是否有任何处理此类问题的最佳做法?有人想出一个他们想要分享的解决方案吗?非常感谢 - 这已经让我感到困扰了几天。

0 个答案:

没有答案