mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Do not try to call column_names
on the abstract class.
Normally the table for abstract class won't be existed, so we should not trying to call `#column_names` on it.
This commit is contained in:
parent
7e6145b4a2
commit
3bed43c6a5
2 changed files with 15 additions and 2 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue