注册后 48 小时检查用户是否有餐厅

Check if user has restaurant 48hours after sign up

我很难检查我的用户是否在 signed_up 后 48 小时创建了餐厅(objective 是发送电子邮件提醒)。

我尝试了不同的东西,现在我在

用户模型:User.rb

after_create :reminder



def reminder
    if Time.now.utc == self.created_at + 48.hours && self.restaurants.count == 0
    UserMailer.theactionofthemail(self).deliver_later
 end

我是这样尝试的,因为我看到使用 sidekiq 我不必为 deliver_later 我的 UserMailers 创建作业 .. :)

有什么线索吗? 如果不清楚,请告诉我!

提前致谢

after_create 将在创建后立即调用该方法,因此 created_at 永远不会等于(顺便说一句,通常你想说 >=,以防毫秒已经过去)到用户的 created_at.

我建议您立即探索 ActiveJob。创建一个做同样问题的工作,除了 运行 48 小时后:

after_create :reminder

def reminder
  CreateRestaurantReminderJob.set(wait: 48.hours).perform_later self
end

在那份工作中:

def perform(user)
  return unless user.restaurants.count.zero?
  UserMailer.theactionofthemail(user).deliver_now
end

如果您已经在使用 Sidekiq,您可以将它配置为 ActiveJob 的后端,或者使用它自己的 worker。语法可能会改变,但概念不变。