aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/metal/params_wrapper.rb2
-rw-r--r--actionpack/lib/action_view/helpers/date_helper.rb8
-rw-r--r--actionpack/test/controller/params_wrapper_test.rb15
3 files changed, 19 insertions, 6 deletions
diff --git a/actionpack/lib/action_controller/metal/params_wrapper.rb b/actionpack/lib/action_controller/metal/params_wrapper.rb
index 9b27bb8b91..b18be60201 100644
--- a/actionpack/lib/action_controller/metal/params_wrapper.rb
+++ b/actionpack/lib/action_controller/metal/params_wrapper.rb
@@ -163,7 +163,7 @@ module ActionController
unless options[:only] || options[:except]
model ||= _default_wrap_model
- if model.respond_to?(:column_names)
+ if !(model.respond_to?(:abstract_class?) && model.abstract_class?) && model.respond_to?(:column_names)
options[:only] = model.column_names
end
end
diff --git a/actionpack/lib/action_view/helpers/date_helper.rb b/actionpack/lib/action_view/helpers/date_helper.rb
index 853ab061d2..c78c03a5eb 100644
--- a/actionpack/lib/action_view/helpers/date_helper.rb
+++ b/actionpack/lib/action_view/helpers/date_helper.rb
@@ -841,14 +841,14 @@ module ActionView
# Build select option html from date value and options.
# build_options(15, :start => 1, :end => 31)
# => "<option value="1">1</option>
- # <option value=\"2\">2</option>
- # <option value=\"3\">3</option>..."
+ # <option value="2">2</option>
+ # <option value="3">3</option>..."
#
# If <tt>:step</tt> options is passed
# build_options(15, :start => 1, :end => 31, :step => 2)
# => "<option value="1">1</option>
- # <option value=\"3\">3</option>
- # <option value=\"5\">5</option>..."
+ # <option value="3">3</option>
+ # <option value="5">5</option>..."
def build_options(selected, options = {})
start = options.delete(:start) || 0
stop = options.delete(:end) || 59
diff --git a/actionpack/test/controller/params_wrapper_test.rb b/actionpack/test/controller/params_wrapper_test.rb
index 85464fc780..bed4a6a553 100644
--- a/actionpack/test/controller/params_wrapper_test.rb
+++ b/actionpack/test/controller/params_wrapper_test.rb
@@ -133,6 +133,7 @@ class ParamsWrapperTest < ActionController::TestCase
end
def test_derived_wrapped_keys_from_matching_model
+ User.expects(:respond_to?).with(:abstract_class?).returns(false)
User.expects(:respond_to?).with(:column_names).returns(true)
User.expects(:column_names).returns(["username"])
@@ -145,6 +146,7 @@ class ParamsWrapperTest < ActionController::TestCase
def test_derived_wrapped_keys_from_specified_model
with_default_wrapper_options do
+ Person.expects(:respond_to?).with(:abstract_class?).returns(false)
Person.expects(:respond_to?).with(:column_names).returns(true)
Person.expects(:column_names).returns(["username"])
@@ -156,6 +158,17 @@ class ParamsWrapperTest < ActionController::TestCase
end
end
+ def test_not_wrapping_abstract_model
+ User.expects(:respond_to?).with(:abstract_class?).returns(true)
+ User.expects(:abstract_class?).returns(true)
+
+ with_default_wrapper_options do
+ @request.env['CONTENT_TYPE'] = 'application/json'
+ post :parse, { 'username' => 'sikachu', 'title' => 'Developer' }
+ assert_parameters({ 'username' => 'sikachu', 'title' => 'Developer', 'user' => { 'username' => 'sikachu', 'title' => 'Developer' }})
+ end
+ end
+
private
def with_default_wrapper_options(&block)
@controller.class._wrapper_options = {:format => [:json]}
@@ -246,4 +259,4 @@ class NamespacedParamsWrapperTest < ActionController::TestCase
def assert_parameters(expected)
assert_equal expected, Admin::Users::UsersController.last_parameters
end
-end \ No newline at end of file
+end