将布尔值设置为false

时间:2013-10-12 19:56:09

标签: ruby-on-rails ruby

我的模型有一个回调函数,如果一个布尔值设置为true,回调会将它设置为false,如下所示:

after_create :set_boolean

def set_boolean
  if self.status == true
    self.name = "XYZ"
    self.status = !self.status
    self.save
  end
end

使用上面的回调,我可以将name的值更新为XYZ,但状态变量的值仍设置为true。我猜,回调显然有效,但无法弄清楚问题出在哪里。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

创建后,您可以在model中指定一项功能,将属性值设置为false,如下所示

在模型中

after_create :set_status

def set_status
  self.status = false
end

答案 1 :(得分:-3)

我认为您需要在!运算符之前将赋值包装到括号中。

self.status = !(self.status)