Automatically decrement value each day

I have a Person model with a points attribute. For the most part,
points values will be incremented and decremented via user votes.
However, I'd also like to decrement a Person's points by half a point
each day.

How do I automatically decrement the value once per day?

Your help is greatly appreciated :slight_smile:


Id suggest using a database job but you could always just store when you last decreased it date and then on sign in do the decrease. If you plan on showing other users the points you’d need the job.

Hi Tim,

Thanks for responding. Sorry if this is a dumb question, but what do
you mean by database job?

This is going to be a ranked list (current points value determines the
ranking), and I'd like users to be able to view the list without being
logged in.

Tim Lovett wrote:

I would use a scheduler for this kind of stuff. A pure ruby solution
is rufus scheduler:
With rufus scheduler you can schedule a routine that runs every day at
a given hour and decrements every persons points by 0.5.

Wow! Perfect. Thank you so much.

Sharagoz wrote:

no scheduler solution:

why not use created_at or updated_at?
simply get current date than compute days since your prefered event and make it half…