Is there an opposite function of slice function in Ruby?

后端 未结 3 498
清酒与你
清酒与你 2021-02-05 00:07

In this post, slice function is used to get only necessary elements of params. What would be the function I should use to exclude an element of params (such as user_id)?

相关标签:
3条回答
  • 2021-02-05 00:34

    Use except:

    a = {"foo" => 0, "bar" => 42, "baz" => 1024 }
    a.except("foo")
    # returns => {"bar" => 42, "baz" => 1024}
    
    0 讨论(0)
  • 2021-02-05 00:35

    Inspired in the sourcecode of except in Rails' ActiveSupport

    You can do the same without requiring 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}
    
    0 讨论(0)
  • 2021-02-05 00:44

    Try this

    params = { :title => "title", :other => "other", :body => "body"  }
    
    params.select {|k,v| [:title, :body].include? k  } #=> {:title => "title", :body => "body"}  
    
    0 讨论(0)
提交回复
热议问题