2015-10-20 2 views
0

Dans mon application Rails 4, j'ai un modèle post avec un attribut personnalisé :date.Rails 4: condition sur model.date.strftime ("% u") jamais vrai

Dans le fichier post.rb, je défini la méthode suivante:

def test_days 
    if self.date.strftime("%u") == 4 
     "Message 1" 
    elsif self.date.strftime("%u") == 5 
     "Message 2" 
    else 
     "Message 3" 
    end 
end 

Quelle que soit la date que j'attribuons à un objet après, je reçois toujours « Message 3 » affiché - même quand je devrais obtenir « Message 1 » ou "Message 2".

J'ai essayé Today.date.strftime ("% u") et j'ai obtenu 1 (qui est la bonne réponse, puisque nous sommes lundi dans mon fuseau horaire). Donc, il semble que ma condition, c'est-à-dire: self.date.strftime("%u") == 4 ou self.date.strftime("%u") == 5 n'est jamais vraie.

Mais je n'arrive pas à comprendre pourquoi.

Une idée?

Répondre

2

strftime("%u") renvoie une chaîne. 2 solutions possibles:

if self.date.strftime("%u") == "4"

ou

if self.date.wday == 4

+0

Impressionnant! Je suis allé avec la solution numéro 1, mais heureux de savoir qu'il existe une deuxième option. Merci beaucoup pour votre aide. –