diff options
author | Travis Grathwell <tjgrathwell@gmail.com> | 2014-12-29 18:12:03 -0800 |
---|---|---|
committer | Eugenia Dellapenna <eugenia.dellapenna@gmail.com> | 2014-12-29 18:12:03 -0800 |
commit | 3efd90ac5b15d376bc5780d08d6e07d5a2b50ff1 (patch) | |
tree | a33525691bcc0fb0a3650c2953352f7da73ff903 /actionview/test | |
parent | 241ccaef88e494657ff4121ef31d73160237fd6c (diff) | |
download | rails-3efd90ac5b15d376bc5780d08d6e07d5a2b50ff1.tar.gz rails-3efd90ac5b15d376bc5780d08d6e07d5a2b50ff1.tar.bz2 rails-3efd90ac5b15d376bc5780d08d6e07d5a2b50ff1.zip |
Fix form_for to work with objects that implement to_model
Previously, if you tried to use form_for with a presenter object
that implements to_model, it would crash in
action_dispatch/routing/polymorphic_routes.rb when asking the presenter
whether it is .persisted?
Now, we always ask .persisted? of the to_model object instead.
This seems to been an issue since 1606fc9d840da869a60213bc889da6fcf1fdc431
Signed-off-by: Eugenia Dellapenna <eugenia.dellapenna@gmail.com>
Diffstat (limited to 'actionview/test')
-rw-r--r-- | actionview/test/activerecord/polymorphic_routes_test.rb | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/actionview/test/activerecord/polymorphic_routes_test.rb b/actionview/test/activerecord/polymorphic_routes_test.rb index 5842b775bb..8e1ed2776d 100644 --- a/actionview/test/activerecord/polymorphic_routes_test.rb +++ b/actionview/test/activerecord/polymorphic_routes_test.rb @@ -25,15 +25,17 @@ class Series < ActiveRecord::Base self.table_name = 'projects' end -class ModelDelegator < ActiveRecord::Base - self.table_name = 'projects' - +class ModelDelegator def to_model ModelDelegate.new end end class ModelDelegate + def persisted? + true + end + def model_name ActiveModel::Name.new(self.class) end @@ -605,13 +607,18 @@ class PolymorphicRoutesTest < ActionController::TestCase end end - def test_routing_a_to_model_delegate + def test_routing_to_a_model_delegate with_test_routes do - @delegator.save assert_url "http://example.com/model_delegates/overridden", @delegator end end + def test_nested_routing_to_a_model_delegate + with_test_routes do + assert_url "http://example.com/foo/model_delegates/overridden", [:foo, @delegator] + end + end + def with_namespaced_routes(name) with_routing do |set| set.draw do @@ -645,6 +652,9 @@ class PolymorphicRoutesTest < ActionController::TestCase end resources :series resources :model_delegates + namespace :foo do + resources :model_delegates + end end extend @routes.url_helpers |