Rails (ou Ruby): Oui/Non au lieu de Vrai/Faux
Je sais que je pourrais facilement écrire une fonction et le mettre dans le contrôleur de l'application, mais je préfère ne pas si il y a autre chose qui fait déjà. Fondamentalement, je veux avoir quelque chose comme:
>> boolean_variable?
=> true
>> boolean_variable?.yesno
=> yes
>> boolean_variable?.yesno.capitalize
=> Yes
est là quelque chose comme cela déjà dans les Rails de cadre?
Vous devez vous connecter pour publier un commentaire.
Pas de telles intégré aide existe, mais c'est trivial à mettre en œuvre:
yesno
est probablement sûr-ish.Il n'y a pas quelque chose dans les Rails.
Une meilleure façon que l'ajout de vrai/faux classes de réaliser quelque chose de similaire pourrait être de faire une méthode dans ApplicationHelper:
Alors, à votre avis
Ajouter des méthodes aux classes intégrées est généralement mal vu. De Plus, cette approche s'intègre étroitement à Rails " aidants comme
raw()
.Aussi, un compromis ne sont pas une bonne idée qu'ils ne sont pas facilement mis à jour (ou testé).
Il est un véritable joyau pour que maintenant: humanize_boolean
Alors que vous venez de faire:
Il prend également en charge de l'internationalisation de sorte que vous pouvez facilement changer la chaîne renvoyée par y compris votre traduction de fr.boolean.oui et en.boolean.non (ou tout jeu vous le souhaitez)
Alternativement, vous pouvez aussi faire un compromis dans vos points de vue tels que:
La
humanize_boolean
gem s'étend leTrueClass
,FalseClass
etNilClass
qui est un sous-extension, je préfère éviter.J'ai trouvé cette aide avec un haut niveau de traduction est isolé, amical pour changer et vous pouvez lui donner quelque chose truthy ou falsey:
Faire
!!(boolean).to_s
assure les variables passées à l'argument est soit un"true"
ou"false"
valeur lors de la construction de la chaîne de traduction.En cours d'utilisation: