4

如何通过 ruby​​ on rails 中的模型使列值为空?例如,我有一个checkbox被叫'include_on_epc'textbox被叫'removal_reason'

如果选中该复选框,我想将文本框的值设置为数据库中的 NULL。

我尝试了以下方法,它不起作用。

class Emm::Rrr::Result < ActiveRecord::Base

  before_save :no_removal_reason_when_including_on_epc

  private
  def no_removal_reason_when_including_on_epc
    if include_on_epc == 1
      self.removal_reason == nil
    end
  end
end
4

2 回答 2

8

这里有两个问题。

  1. 正如 Jakob 指出的那样,self.removal_reason == nil与 相比removal_reasonnil您想设置 removal_reasonnil。因此self.removal_reason = nil,这绝对是您想要的。

  2. 如果include_on_epc是一boolean列,比较1是行不通的。您可能想要一个简单if include_on_epc的值,因为它的值很可能是trueor false,不是1or 0,并且在 Ruby 中1 != true

于 2013-01-14T10:50:58.030 回答
3

看来self.removal_reason == nil应该是self.removal_reason = nil。我猜你想要分配,而不是在那条线上的比较。;-)

于 2013-01-14T10:44:23.053 回答