我正在尝试创建一个CRON
作业来监控我平台上user
的活动状态。
它应该检查用户是否购买了某些东西或是否向某人发送了消息,如果没有,则发送电子邮件。我的方法是:
def self.create_new_user_reminders
@new_users = User.where({ banned: false, admin: false })
@new_users = @new_users.reject { |u| u.client.try(:purchases).any? or u.client.try(:conversations).any? }
@new_users.each do |nu|
SalesMailer.delay.signup_no_engagement(nu)
end
end
现在我想扩展此项,以包含一个条件,如果客户在过去14天内没有购买或发送消息,则会发送电子邮件。
Client
与Purchases
和Conversations
有has_many
关联。
我可以想到这样做的一种方法是购买创建嵌套循环并拒绝特定的purchases
和messages
,但这实际上效率很低。
在Rails上实现此功能的好方法是什么?
答案 0 :(得分:1)
您可以使用created_at
来检查用户是否购买了某些内容或是否已向某人发送消息
@new_users = @new_users.reject { |u| u.client.try(:purchases).where('created_at > ?', 14.days.ago).any? or u.client.try(:conversations).where('created_at > ?', 14.days.ago).any? }