【问题标题】:Check if Rails association created in past x days检查过去 x 天内是否创建了 Rails 关联
【发布时间】: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 天内没有购买任何东西或给某人发消息,则会发送电子邮件。

ClientPurchasesConversations 关联为 has_many 关联。

我能想到的一种方法是购买创建嵌套循环并拒绝特定的purchasesmessages,但这确实效率低下。

在 Rails 上实现这个的好方法是什么?

【问题讨论】:

  • 什么是客户端?它是 User 上的属性还是 User 模型中定义的方法?

标签: ruby-on-rails ruby-on-rails-4 activerecord cron


【解决方案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? }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多