我的模型中有以下功能
after_save :update_status
def update_status
if quantity_received >= quantity
self.received = true
else
self.received = false
end
end
True工作正常,但设置为true时不会更新为false。有什么想法吗?
答案 0 :(得分:2)
当你定义一个回调时,非常重要的是你不要无意中返回false
,这是一个停止链的信号,这就是你在这种情况下所做的事情。
避免此问题的重写版本是:
after_save :update_status
def update_status
self.received = quantity_received >= quantity
return
end
您可以返回false
以外的任何内容,因此最后一行可以是nil
或true
。
答案 1 :(得分:1)
您正在分配收到的“之后”保存。所以这个任务没有得到保存!
尝试
before_save :update_received
def update_received
self.received = quantity_received >= quantity
end
通过“保存”,我假设你的意思是“保存”在数据库中。