我有一个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 有点不确定——一般来说,查询似乎太多了,而且确实太痛苦了(尤其是在阅读本文之后) - 但在这种情况下,一旦一个主题完成,它就不会改变,所以多次检查它的状态似乎没有用 - 处理这个问题的最佳方法是什么?