ruby on rails - Building a penalty system for overdue library books - how do I keep account of the fines per user? -
ruby on rails - Building a penalty system for overdue library books - how do I keep account of the fines per user? -
when user has booking overdue, want give user penalty of £1 per day each overdue booking.
so far i've defined overdue booking 1 has booking_end datetime attribute less time.now , still has active boolean set true.
what right way approach penalty system? necessary create new table penalties? in case, how create fine increment per booking every day?
class booking < activerecord::base def overdue? due_date_absolute < time.now.strftime("%d %b %y") && self.active == true end def due_date_absolute self.booking_end.strftime("%d %b %y") end end
you shouldn't store info this, it's purely output of computation. calculate penalty in real-time each time need know it.
def overdue? due_date_absolute < time.now.strftime("%d %b %y") && self.active == true end def due_date_absolute self.booking_end.strftime("%d %b %y") end def overdue_rate 1.99 # $1.99 per day; hard-code or pull settings file, etc. end def fine # calculate number of days over-due, multiply overdue_rate overdue_rate * ((time.now - self.booking_end) / 1.days) end ruby-on-rails ruby-on-rails-4
Comments
Post a Comment