entier ruby à booléen
J'ai un champ DB qui est de type entier et les valeurs sont toujours 0 ou 1. Comment puis-je récupérer la valeur booléenne équivalente dans ruby? de telle sorte que lorsque je fais ce qui suit, la case à cocher est définie de manière appropriée:
<%= check_box_tag 'resend', @system_config.resend %>
3 réponses
Vous pouvez utiliser la méthode zero?
. Il renvoie true si 0. Si vous avez besoin de revenir en arrière, vous pouvez facilement l'annuler à !@system_config.resend.zero?
. Ou vous pouvez étendre la classe Fixnum, en ajoutant une méthode to_b?
, puisque tout est ouvert et extensible dans les langages dynamiques.
class Integer
def to_b?
!self.zero?
end
end
API Ruby: http://ruby-doc.org/core/classes/Fixnum.html#M001050
1 est votre seule valeur de vérité ici. Vous pouvez donc obtenir la valeur de vérité booléenne avec number == 1
.
J'ai eu le même problème et traitées de cette façon:
def to_boolean(var)
case var
when true,'true',1,'1'
return true
when false, 'false',0,'0'
return false
end
end
Cela fonctionne avec des formulaires, des bases de données et des personnes qui ne connaissent pas ruby. Je l'ai trouvé utile en particulier avec Rails, car les paramètres sont souvent passés / interprétés comme des chaînes et je ne veux pas m'inquiéter à ce sujet.