ruby integer boolean
J'ai une DB champ de type entier et les valeurs sont toujours à 0 ou 1. Comment puis-je récupérer l'équivalent de la valeur booléenne en ruby? tels que, lorsque je fais la suite de la case à cocher est réglé de manière appropriée:
<%= check_box_tag 'resend', @system_config.resend %>
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
zero?
méthode. Elle retourne true si la valeur est 0. Si vous avez besoin à l'arrière, vous pouvez facilement le nier à!@system_config.resend.zero?
. Ou vous pouvez étendre la Fixnum classe, l'ajout d'unto_b?
méthode, car tout est ouvert et extensible dans la dynamique des langues.De l'API Ruby: http://ruby-doc.org/core/classes/Fixnum.html#M001050
nonzero?
qui peut lire de mieux que de!zero?
.nonzero?
fonction, mais n'a aucune idée de ce queto_b?
est!nonzero?
- il retourne truthy et falsy les valeurs, mais pastrue
commezero?
n' (ils sont définis dans les différentes classes, voir ruby-doc.org/core-1.9.3/Fixnum.html#method-i-zero-3F par rapport à ruby-doc.org/core-1.9.3/Numeric.html#method-i-nonzero-3Fnonzero?
ne pas retourner un booléen comme la plupart des rubis prédicat méthodes ne et est tombé sur ce billet de débattre obtenir ce corrigé bugs.ruby-lang.org/issues/9123. Ne semble pas tout le monde est d'accord c'est une question aussi, malheureusement, ne semble pas aller n'importe où.1 est la seule valeur de vérité ici. De sorte que vous pouvez obtenir le boolean valeur de vérité avec
number == 1
.==
etzero?
méthodes standard de Ruby. Mais il se trouve quenumber == 1
lit plus clairement que!number.zero?
de l'OMI.J'ai eu le même problème et traitées de cette façon:
Cela fonctionne avec les formes, les bases de données et des gens qui ne savent pas ruby.
Je l'ai trouvé pour être utile, en particulier avec des Rails, puisque les paramètres sont souvent passés/interprétés comme des chaînes et je ne veux pas inquiéter à ce sujet.