我有一個保單類,在這個類中,我有兩個方法來確定客戶是否可以更新他們的保單。ruby中這個日期比較邏輯有什麼問題嗎?
他們是這樣的:(在policy.rb模型)
def is_renewable?
if has_not_been_renewed?
self.ends_on >= Date.today && self.ends_on <= Date.today + 60.days
end
end
def has_not_been_renewed?
been_renewed = self.renewed_policy.nil? || !self.renewed_policy.active? || !self.active?
end
所以,出於某種原因,這是我工作的本地機器上而不是在我們的分期環境。 (我知道正確,每個程序員的禍根都是「但它在我的機器上工作!」)。
邏輯看起來很簡單:首先檢查以確保它尚未續訂或者他們有不同的活動策略。然後檢查以確保它尚未過期,並且在未來60天內有時會過期。
這是從該行的觀點稱作:
<%= link_to('Renew', {:action => 'renew', :id => policy.id}, {:class => 'btn btn-success'}) if policy.is_renewable? %>
我真的不能明白爲什麼這不會在任何地方工作。我不會問,但我一整天都在看這個愚蠢的問題,需要一組新的眼睛來看看它。謝謝
對此有所幫助,兩個數據庫(本地和分期)格式的格式如下: yyyy-mm-dd
因此今天的日期將是2012-09-06
。
「在我的本地機器上工作,但不在我們的升級環境中」是什麼意思?像邏輯返回不正確,或者引發異常? –
它回來不正確,所以測試我的本地機器上的用例,它工作得很好。任何已過期的政策都沒有續訂按鈕,並且任何在未來60天內過期的政策都會生效。而任何在60天后過期的東西都沒有續訂按鈕。已過期的分段策略沒有續訂按鈕(按預期工作),但在未來60天內過期的策略也沒有續訂按鈕(不按預期工作,應該有更新按鈕) – Ryan
有如果它是方法'has_not_been_renewed?'的最後一個語句,那麼不需要設置變量'been_renewed' –