aboutsummaryrefslogtreecommitdiffstats
path: root/activeresource
diff options
context:
space:
mode:
Diffstat (limited to 'activeresource')
-rw-r--r--activeresource/lib/active_resource/base.rb5
-rw-r--r--activeresource/test/base_test.rb7
2 files changed, 12 insertions, 0 deletions
diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb
index 9fb347d2c3..b1a79731b9 100644
--- a/activeresource/lib/active_resource/base.rb
+++ b/activeresource/lib/active_resource/base.rb
@@ -550,6 +550,11 @@ module ActiveResource
attributes[self.class.primary_key] = id
end
+ # Allows ActiveResource objects to be used as parameters in ActionPack URL generation.
+ def to_param
+ id && id.to_s
+ end
+
# Test for equality. Resource are equal if and only if +other+ is the same object or
# is an instance of the same class, is not +new?+, and has the same +id+.
#
diff --git a/activeresource/test/base_test.rb b/activeresource/test/base_test.rb
index f97b08295a..89bc28deda 100644
--- a/activeresource/test/base_test.rb
+++ b/activeresource/test/base_test.rb
@@ -444,4 +444,11 @@ class BaseTest < Test::Unit::TestCase
assert xml.include?('<name>Matz</name>')
assert xml.include?('<id type="integer">1</id>')
end
+
+ def test_to_param_quacks_like_active_record
+ new_person = Person.new
+ assert_nil new_person.to_param
+ matz = Person.find(1)
+ assert_equal '1', matz.to_param
+ end
end