Cette question est un peu vieux, mais depuis que je suis tombé sur cette question à quelques reprises, et n'a pas comme l'une des solutions proposées, j'ai programmé moi-même quelque chose qui permet d'utiliser plusieurs chaînes de vrai comme 'oui', 'sur', 't' et le contraire pour de faux.
Monkey patch de la classe String, et ajouter une méthode à les convertir en booléen, et de placer ce fichier dans /config/initializers
comme suggéré ici: Monkey Patching dans Rails 3
class String
def to_bool
return true if ['true', '1', 'yes', 'on', 't'].include? self
return false if ['false', '0', 'no', 'off', 'f'].include? self
return nil
end
end
Notez que si la valeur n'est pas valide, soit de vrai ou de faux, puis il retourne nil. Ce n'est pas la même à la recherche d' ?paid=false
(retourner tous les enregistrements ne sont pas remboursés) que ?paid=
(je n'ai pas préciser si il faut le payer ou pas -- donc jeter ce).
Puis, à la suite de cet exemple, la logique de votre contrôleur devrait ressembler à ceci:
Something.where(:paid => params[:paid].to_bool) unless params[:paid].try(:to_bool).nil?
Il est assez soignée, et aide à garder les contrôleurs/modèles propres.