我根据用户的总积分给产品打折。但我想鼓励用户在 180 天内使用这些积分。因此,只有 created_at < 180.days.ago 的点数会计算在内。
从 180 天前获取唯一标点符号的简单方法是什么?
我根据用户的总积分给产品打折。但我想鼓励用户在 180 天内使用这些积分。因此,只有 created_at < 180.days.ago 的点数会计算在内。
从 180 天前获取唯一标点符号的简单方法是什么?
似乎为时已晚,但现在我正在处理类似的情况,我在他们自己的文档中找到了这个例子。
https://github.com/tute/merit#other-actions-1
在您的情况下,代码将是这样的。
user.score_points.where("created_at > '#{180.days.ago}'").sum(:num_points)
显然,#points
仅返回整数(不是 Point 对象)。因此,如果您想选择具有给定日期的点,则需要#score_points
改用。
我希望这有帮助。
我对 Merit 不熟悉,因此您必须查看它为您提供的模型,但您可能可以在您的用户模型中执行以下操作:
class User < ActiveModel::Base
def validPonts
self.points.select{ |p| p.created_at > 180.days.ago }
end
end
然后您调用@user.validPoints 以仅检索过去 180 天内存在的点。