【发布时间】:2017-12-10 23:17:37
【问题描述】:
我正在尝试创建一个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 上实现这个的好方法是什么?
【问题讨论】:
-
什么是客户端?它是 User 上的属性还是 User 模型中定义的方法?
标签: ruby-on-rails ruby-on-rails-4 activerecord cron