2014-10-06 168 views
3

我有一個名爲「Tenant」的模型,它有兩個日期屬性tenant_fromtenant_until檢查日期是否在兩個其他日期之間

我想寫一個方法來檢查Date.today是否在上面提到的兩個日期之間。我想沿着這些線路做一些事情:

IF Date.today IS BETWEEN tenant.tenant_from AND tenant.tenant_until DO 
    ... 
ELSE 
    ...  

回答

14

嘗試

if Time.zone.today.between?(tenant.tenant_from, tenant.tenant_until) 
    # YOUR CODE GOES HERE 
else 
    # YOUR CODE GOES HERE 
end 
+1

完美的傢伙,這正是我正在尋找的代碼。非常感謝! – NickEckhart 2014-10-06 14:20:32

+1

不要忘記標記爲答案! – 2014-10-06 14:50:39

9

只是一個替代的解決方案。您可以使用日期範圍和cover?來實現相同的效果。

(tenant.tenant_from .. tenant.tenant_until).cover?(Date.today) 
+1

爲了便於閱讀,我建議在空格中包裹'..'。白色空間可幫助我們的眼睛挑出部分字符串,代碼等,從而增強可維護性。 – 2014-10-06 16:48:48

+0

謝謝!你絕對是對的。 – 2014-10-06 17:36:39

1
Class Tenant < ActiveRecord::Base 
    def current? #name this what you want, but keep the question mark, since it returns a boolean 
    (tenant.tenant_from.to_date .. tenant.tenant_until.to_date).include?(Date.today) 
    end 
end 

現在你對模型(屬於它的地方)的實例模型的邏輯。你的邏輯是if @tenant.current?

+0

Mallanaga有一個偉大的觀點!在你的模型中隱藏這樣的「業務邏輯」。這似乎是一件小事,但隨着時間的推移,它確實可以幫助你的觀點和控制器保持可讀性,精簡和雜亂無章! – 2014-10-06 18:55:26

相關問題