grabury
grabury

Reputation: 5599

How to schedule a task 1 week after sign up

I want to schedule a task that sends a reminder to a user 1 week after they've signed up to my heroku app.

I'm imagining it would be something like:

task :send_reminders => :environment do
   User.send_reminder
end

In my user model

def self.send_reminder
  User.each do |user|
    if Time.now == user.created_at + 7.days
      ReminderMailer.delay.remind(user)
    end
  end
end

Is it a bad idea (takes up dyno time) to check every record's created_at value to work out if it's been a week?

Upvotes: 0

Views: 299

Answers (1)

claptimes
claptimes

Reputation: 1717

One option would be to create add the user to a queue (maybe using Sidekiq) and delaying the reminder for one week. That way you don't have to recheck every user's created_at value.

Something like:

UserReminder.delay_until(5.days.from_now).send_reminder(@user.id)

Upvotes: 2

Related Questions