2013-01-14 68 views
2

如何通過在rails上的ruby模型使列值爲null?例如,我有一個名爲'include_on_epc'checkbox和名爲'removal_reason'textbox如何通過rails模型將值設置爲null?

如果複選框被選中,我想設置文本框的值在數據庫中應該爲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 

回答

6

這裏有兩個問題。

  1. 至於雅各布指出,self.removal_reason == nil比較removal_reasonnil,並希望設置removal_reasonnil。因此self.removal_reason = nil絕對是你想要的。

  2. 如果include_on_epcboolean列,與1比較是行不通的。您可能需要一個簡單的if include_on_epc,因爲它的值可能是truefalse,而不是10,並且在Ruby 1 != true中。

+0

酷...它的工作。你的第二點是奏效的!...感謝您的詳細解答以更新自己。非常感謝你安迪.... – Vinay

3

看來self.removal_reason == nil應該是self.removal_reason = nil。你想要分配,而不是我猜想的那條線上的比較。 ;-)

+0

我想,一個..但沒有運氣.. – Vinay

+0

'include_on_epc'可能是「1」而不是1試試'如果include_on_epc.to_i == 1'或覈對的字符串,並看看是否有任何差異 –

+0

謝謝李,安迪的回答奏效。謝謝李和Jakob – Vinay