En Ruby ou Rails, de hachage.de fusion({:commande => 'asc'}) peut retourner une nouvelle table de hachage avec une nouvelle clé. Ce qui peut revenir une nouvelle table de hachage avec une clé supprimée?

En Ruby (ou Rails), nous pouvons faire

new_params = params.merge({:order => 'asc'})

et maintenant new_params est un hachage avec clé :order.

Mais est-il une ligne, il peut retourner la valeur de hachage avec une clé supprimée? La ligne

new_params = params.delete(:order)

ne fonctionnera pas parce que les delete méthode retourne la valeur et c'est tout. Devons-nous le faire en 3 étapes?

tmp_params = params
tmp_params.delete(:order)
return tmp_params

Est-il un meilleur moyen? Parce que je veux faire un

new_params = (params[:order].blank? || params[:order] == 'desc') ? 
               params.merge({:order => 'asc') : 
               (foo = params; foo.delete(:order); foo)   # return foo

mais la dernière ligne ci-dessus est quelque peu maladroit. Est-il un meilleur moyen de le faire?

(remarque: la valeur par défaut est 'desc', donc quand il n'y a pas de order param, cela signifie que c'est la valeur par défaut est desc, puis bascule à ajouter order=asc, mais sinon, il suffit de retirer le param order de sorte qu'il est de retour à l'ordre par défaut des desc)

  • Voulez-vous changer (destruction) params? Si vous le faites, vous devriez le faire directement comme tmp_params.delete(:order). Si non, vous devez dup avant delete.
InformationsquelleAutor | 2011-04-19