我有一個名爲「Tenant」的模型,它有兩個日期屬性tenant_from
和tenant_until
。檢查日期是否在兩個其他日期之間
我想寫一個方法來檢查Date.today
是否在上面提到的兩個日期之間。我想沿着這些線路做一些事情:
IF Date.today IS BETWEEN tenant.tenant_from AND tenant.tenant_until DO
...
ELSE
...
我有一個名爲「Tenant」的模型,它有兩個日期屬性tenant_from
和tenant_until
。檢查日期是否在兩個其他日期之間
我想寫一個方法來檢查Date.today
是否在上面提到的兩個日期之間。我想沿着這些線路做一些事情:
IF Date.today IS BETWEEN tenant.tenant_from AND tenant.tenant_until DO
...
ELSE
...
嘗試
if Time.zone.today.between?(tenant.tenant_from, tenant.tenant_until)
# YOUR CODE GOES HERE
else
# YOUR CODE GOES HERE
end
只是一個替代的解決方案。您可以使用日期範圍和cover?
來實現相同的效果。
(tenant.tenant_from .. tenant.tenant_until).cover?(Date.today)
爲了便於閱讀,我建議在空格中包裹'..'。白色空間可幫助我們的眼睛挑出部分字符串,代碼等,從而增強可維護性。 – 2014-10-06 16:48:48
謝謝!你絕對是對的。 – 2014-10-06 17:36:39
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?
。
Mallanaga有一個偉大的觀點!在你的模型中隱藏這樣的「業務邏輯」。這似乎是一件小事,但隨着時間的推移,它確實可以幫助你的觀點和控制器保持可讀性,精簡和雜亂無章! – 2014-10-06 18:55:26
完美的傢伙,這正是我正在尋找的代碼。非常感謝! – NickEckhart 2014-10-06 14:20:32
不要忘記標記爲答案! – 2014-10-06 14:50:39