我想根據另一個布爾值字段的值將布爾型字段設置爲false。我嘗試了以下ActiveRecord模式:Rails:如何使用before_save根據另一個字段更改字段值?
before_save :reconcile_xvent
def reconcile_xvent
self.xvent_hood = false if !self.xvent_plenum?
end
但這不起作用。現在,我的許多單元測試失敗:
ActiveRecord::RecordNotSaved: ActiveRecord::RecordNotSaved
如果xvent_plenum爲false,如何將xvent_hood設置爲false?
更新
這裏是工作(其中一些來自的意見/回答以下問題):
before_validation :reconcile_xvent
def reconcile_xvent
if self.xvent_hood?
self.xvent_hood = false unless xvent_plenum?
end
end
我無法弄清楚,使其沒有「如果自己的工作。 xvent_hood?」部分....
如果'xvent_hood'需要等於'xvent_plenum',也許你應該只是做一個'xvent_hood = xvent_plenum'。 – MurifoX 2012-08-02 17:54:02
但它們並不總是相等的。 xvent_plenum應該能夠爲true,並且xvent_hood爲false。 – croceldon 2012-08-02 17:56:54
然後嘗試使用'unless'。 'self.xvend_hood = false,除非self.xvent_plenum'。 – MurifoX 2012-08-02 17:58:29