提交 62aff557 编写于 作者: R Rafael Mendonça França

Allow parameter filters to match multi-parameter attributes

This will make easier to permit date/time attributes generated by
helpers like date_select.

[Sven Schwyn + Rafael Mendonça França]
上级 2b83b073
......@@ -178,6 +178,7 @@ def permit(*filters)
case filter
when Symbol, String then
params[filter] = self[filter] if has_key?(filter)
keys.grep(/\A#{Regexp.escape(filter)}\(\di\)\z/).each { |key| params[key] = self[key] }
when Hash then
self.slice(*filter.keys).each do |key, values|
return unless values
......
require 'abstract_unit'
require 'action_controller/metal/strong_parameters'
class MultiParameterAttributesTest < ActiveSupport::TestCase
test "permitted multi-parameter attribute keys" do
params = ActionController::Parameters.new({
book: {
"shipped_at(1i)" => "2012",
"shipped_at(2i)" => "3",
"shipped_at(3i)" => "25",
"shipped_at(4i)" => "10",
"shipped_at(5i)" => "15",
"published_at(1i)" => "1999",
"published_at(2i)" => "2",
"published_at(3i)" => "5"
}
})
permitted = params.permit book: [ :shipped_at ]
assert permitted.permitted?
assert_equal "2012", permitted[:book]["shipped_at(1i)"]
assert_equal "3", permitted[:book]["shipped_at(2i)"]
assert_equal "25", permitted[:book]["shipped_at(3i)"]
assert_equal "10", permitted[:book]["shipped_at(4i)"]
assert_equal "15", permitted[:book]["shipped_at(5i)"]
assert_nil permitted[:book]["published_at(1i)"]
assert_nil permitted[:book]["published_at(2i)"]
assert_nil permitted[:book]["published_at(3i)"]
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册