This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Merge pull request #39 from svoop/master

Allow parameter filters to match multi-parameter attributes (DHH compatible)
  • Loading branch information...
2 parents 5536c0c + e05301b commit 0e65417323c5c8e6fb8af48690f500792be80c91 @rafaelfranca rafaelfranca committed Oct 5, 2012
Showing with 35 additions and 0 deletions.
  1. +1 −0 lib/action_controller/parameters.rb
  2. +34 −0 test/multi_parameter_attributes_test.rb
@@ -44,6 +44,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, value|
return unless value
@@ -0,0 +1,34 @@
+require 'test_helper'
+require 'action_controller/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
+

0 comments on commit 0e65417

Please sign in to comment.