diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_controller/metal/params_wrapper.rb | 2 | ||||
-rw-r--r-- | actionpack/lib/action_view/helpers/date_helper.rb | 8 | ||||
-rw-r--r-- | actionpack/test/controller/params_wrapper_test.rb | 15 |
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 |