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 %>
25
demandé sur Rafael 2010-08-21 00:36:25

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

le texte d'alt

API Ruby: http://ruby-doc.org/core/classes/Fixnum.html#M001050

48
répondu Jarrett Meyer 2010-08-20 20:48:48

1 est votre seule valeur de vérité ici. Vous pouvez donc obtenir la valeur de vérité booléenne avec number == 1.

9
répondu Chuck 2010-08-20 20:48:16

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.

2
répondu gspoosi 2014-06-02 14:36:52