2013-08-22 3 views
0

Dans mes Rails 3.2 app, je dois créer une condition if qui vérifie quelle date plage la date d'aujourd'hui est quelque chose comme ceci:.Comment spécifier la plage de dates dans les rails?

current_date = Date.today 

# if current_date is between 2013-08-01..2013-08-15 
# return 1 
# elsif current_date is between 2013-08-16..2013-08-30 
# return 2 
# end 
+0

http://stackoverflow.com/questions/4521921/how-to-know-if-todays-date-is-in-a-date-range – Zabba

+0

je vis cette question , mais comment puis-je faire cela avec des dates codées en dur, ainsi que renvoyer une valeur autre que vrai/faux? – yellowreign

Répondre

2

Votre pseudo-code a presque, vous pouvez simplement écrire ce qui suit en utilisant #cover:

def date_range(date) 
    if (Date.new(2013, 8, 1) .. Date.new(2013, 8, 15)).cover?(date) 
    1 
    elsif (Date.new(2013, 8, 16) .. Date.new(2013, 8, 30)).cover?(date) 
    2 
    end 
end 
0

Vous pouvez utiliser Comparable#between?:

if current_date.between? Date.new(2013, 8, 1), Date.new(2013, 8, 15) 
    1 
elsif current_date.between? Date.new(2013, 8, 16), Date.new(2013, 8, 30) 
    2 
end 

ou la date ra NGES: (voir Range#===)

case current_date 
when Date.new(2013, 8, 1)..Date.new(2013, 8, 15) 
    1 
when Date.new(2013, 8, 16)..Date.new(2013, 8, 30) 
    2 
end 
Questions connexes