2012-06-09 60 views
1

我有一個模型和一個函數來檢查它是否有效。問題是它總是返回假,即使它是真的。當它是真的時,Rails模型函數會變成false

這是函數:

def is_valid? 
    if self.active == true && (self.end_date.nil? || self.end_date >= Time.now) 
    return true 
    else 
    return false 
    end 
end 

這裏是控制檯輸出:

1.9.2p320 :013 > sd.active == true 
=> true 
1.9.2p320 :014 > sd.end_date.nil? 
=> false 
1.9.2p320 :015 > sd.end_date >= Time.now 
=> true 
1.9.2p320 :016 > (sd.end_date.nil? || sd.end_date >= Time.now) 
=> true 
1.9.2p320 :017 > sd.active && (sd.end_date.nil? || sd.end_date >= Time.now) 
=> true 
1.9.2p320 :018 > sd.is_valid? 
=> false 
1.9.2p320 :019 > sd 
=> #<SubscriptionDiscount id: 1, title: "Prueba de descuento", code: "TEST1",  monthly_discount: #<BigDecimal:902f748,'0.1E2',9(18)>, yearly_discount: #<BigDecimal:902f4f0,'0.1E3',9(18)>, active: true, end_date: "2012-08-01 00:00:00", created_at: "2012-06-06 00:04:10", updated_at: "2012-06-08 21:57:06"> 

爲什麼它不工作?我沒看到它。

請幫忙!通過簡化

def is_valid? 
    active? && (end_date.nil? || end_date >= Time.now) 
end 

是否仍然吹應用

回答

0

讓我們開始?

如果是的話,把下面的:

def is_valid? 
    p active? 
    p end_date.nil? 
    p end_date >= Time.now 
    active? && (end_date.nil? || end_date >= Time.now) 
end 

,共享輸出。

+0

我做了你說的,它沒有奏效。我改變了功能的名稱,它的工作。不管怎麼說,還是要謝謝你! –

+0

你應該仍然重構功能,因爲我建議:) –

+0

我做到了,因爲你是對的,這是更好的方式。但是通過更改函數的名稱解決了問題。 –

相關問題