在rails中,如何在创建,保存和更新配置文件对象后根据:dob日期字段计算年龄?
我的模型中有这个方法:
def set_age
bd = self.dob
d = Date.today
age = d.year - bd.year
age = age - 1 if (
bd.month > d.month or
(bd.month >= d.month and bd.day > d.day)
)
self.age = age.to_i
end
答案 0 :(得分:1)
您可以像这样使用after_save回调
after_save: set_age
def set_age
bd = self.dob
d = Date.today
age = d.year - bd.year
age = age - 1 if (
bd.month > d.month or
(bd.month >= d.month and bd.day > d.day)
)
self.age = age.to_i
self.save
end
或before_save回调
before_save: set_age
def set_age
bd = self.dob
d = Date.today
age = d.year - bd.year
age = age - 1 if (
bd.month > d.month or
(bd.month >= d.month and bd.day > d.day)
)
self.age = age.to_i
end
before_save优于after_save,因为它将提交一次更改。
我还认为你不需要列年龄,因为年龄应该总是在飞行中得出。
由于