我有一个subject模型,其属性包括一个start_date和end_date- 以及一个completed布尔属性。
在subject.rb中,我有一种方法可以找出给定的剩余周数subject:
def weeks_left
time = (self.end_date.to_time - Date.today.to_time).round/1.week
if time < 0
"completed"
elsif time < 1
"less than 1 week"
elsif time == 1
"1 week"
else
"#{time} weeks"
end
end
如果和最好的方法似乎是回调,我想勾选该completed属性self.weeks_left == "completed",但我对使用 after_find 有点不确定——一般来说,查询似乎太多了,而且确实太痛苦了(尤其是在阅读本文之后) - 但在这种情况下,一旦一个主题完成,它就不会改变,所以多次检查它的状态似乎没有用 - 处理这个问题的最佳方法是什么?