一种意义上的布尔方法问题

时间:2011-10-21 15:10:20

标签: ruby-on-rails-3 boolean

我的模型中有以下功能

after_save :update_status

def update_status
  if quantity_received >= quantity
    self.received = true
  else
    self.received = false
  end
end

True工作正常,但设置为true时不会更新为false。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

当你定义一个回调时,非常重要的是你不要无意中返回false,这是一个停止链的信号,这就是你在这种情况下所做的事情。

避免此问题的重写版本是:

after_save :update_status

def update_status
  self.received = quantity_received >= quantity

  return
end

您可以返回false以外的任何内容,因此最后一行可以是niltrue

答案 1 :(得分:1)

您正在分配收到的“之后”保存。所以这个任务没有得到保存!

尝试

before_save :update_received

def update_received
  self.received = quantity_received >= quantity
end

通过“保存”,我假设你的意思是“保存”在数据库中。