47 votes

Existe-t-il une fonction opposée à la fonction slice dans Ruby ?

Dans cet article , la fonction slice est utilisée pour obtenir uniquement les éléments de paramètres nécessaires. Quelle serait la fonction que je devrais utiliser pour exclure un élément de paramètres (tel que user_id) ?

 Article.new(params[:article].slice(:title, :body))

Merci.

79voto

Guillaume Points 11397

Utilisation sauf :

 a = {"foo" => 0, "bar" => 42, "baz" => 1024 }
a.except("foo")
# returns => {"bar" => 42, "baz" => 1024}

2voto

jgomo3 Points 350

Inspiré du code source d' except dans l'ActiveSupport de Rails

Vous pouvez faire la même chose sans avoir besoin de active_support/core_ext/hash/except

     # h.slice( * h.keys - [k1, k2...] )

    # Example:
    h = { a: 1, b: 2, c: 3, d: 4 }
    h.slice( * h.keys - [:b, :c] ) # => { a: 1, d: 4}

1voto

Ritesh Choudhary Points 154

Essaye ça

 params = { :title => "title", :other => "other", :body => "body"  }

params.select {|k,v| [:title, :body].include? k  } #=> {:title => "title", :body => "body"}  

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X