47

在这篇文章中,切片函数用于仅获取参数的必要元素。我应该使用什么函数来排除参数元素(例如 user_id)?

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

谢谢你。

4

4 回答 4

79

使用除了

a = {"foo" => 0, "bar" => 42, "baz" => 1024 }
a.except("foo")
# returns => {"bar" => 42, "baz" => 1024}
于 2012-01-09T15:25:14.813 回答
2

灵感来自Rails 的 ActiveSupport 中的 except的源代码

您可以在不需要的情况下做同样的事情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}
于 2020-09-01T20:45:39.393 回答
1

试试这个

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

params.select {|k,v| [:title, :body].include? k  } #=> {:title => "title", :body => "body"}  
于 2012-01-09T15:22:18.453 回答
1

仅考虑标准 Ruby。

对于低于 3 的 Ruby 版本,没有。

对于 Ruby 3,是的。您可以使用except.

于 2021-08-05T17:09:59.777 回答