当User
的{{1}}过期时,我希望Booking
每天为每个逾期User
罚款1英镑。
到目前为止,我已将过期的Booking
定义为Booking
日期时间属性小于booking_end
并且仍然将Time.now
布尔值设置为{{1 }}
接近此惩罚系统的正确方法是什么?是否有必要为处罚创建一个新表?在这种情况下,我如何每天active
每次罚款增加?
true
答案 0 :(得分:1)
你不应该为此存储任何数据,它纯粹是计算的输出。只需在每次需要知道时实时计算罚金。
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 this or pull it from a settings file, etc.
end
def fine
# Calculate number of days over-due, multiply by overdue_rate
overdue_rate * ((Time.now - self.booking_end) / 1.days)
end