aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2013-11-14 11:03:31 -0800
committerDavid Heinemeier Hansson <david@loudthinking.com>2013-11-14 11:03:31 -0800
commita23bf6f55a2bea50ec39cc744e17c924d727c089 (patch)
treec3c14732612183b2fbd4e10b380361d1d1e5f794 /activerecord/test
parent83a065d181efc5eb1983cdf369bcb96c25fa9c2d (diff)
parent547999df256a5ac650eb012dabf713027b9bda1f (diff)
downloadrails-a23bf6f55a2bea50ec39cc744e17c924d727c089.tar.gz
rails-a23bf6f55a2bea50ec39cc744e17c924d727c089.tar.bz2
rails-a23bf6f55a2bea50ec39cc744e17c924d727c089.zip
Merge pull request #12891 from javan/to-param
Add AR::Base.to_param for convenient "pretty" URLs derived from a model's attribute or method
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/integration_test.rb18
-rw-r--r--activerecord/test/models/company.rb2
2 files changed, 20 insertions, 0 deletions
diff --git a/activerecord/test/cases/integration_test.rb b/activerecord/test/cases/integration_test.rb
index 840865c4cf..1f62433ea2 100644
--- a/activerecord/test/cases/integration_test.rb
+++ b/activerecord/test/cases/integration_test.rb
@@ -23,6 +23,24 @@ class IntegrationTest < ActiveRecord::TestCase
assert_equal '1', client.to_param
end
+ def test_to_param_class_method
+ firm = Firm.find(4)
+ assert_equal '4-flamboyant-software', firm.to_param
+ end
+
+ def to_param_class_method_uses_default_if_blank
+ firm = Firm.find(4)
+ firm.name = nil
+ assert_equal '4', firm.to_param
+ firm.name = ' '
+ assert_equal '4', firm.to_param
+ end
+
+ def to_param_class_method_uses_default_if_not_persisted
+ firm = Firm.new(name: 'Fancy Shirts')
+ assert_equal nil, firm.to_param
+ end
+
def test_cache_key_for_existing_record_is_not_timezone_dependent
utc_key = Developer.first.cache_key
diff --git a/activerecord/test/models/company.rb b/activerecord/test/models/company.rb
index 0b0b304121..76411ecb37 100644
--- a/activerecord/test/models/company.rb
+++ b/activerecord/test/models/company.rb
@@ -40,6 +40,8 @@ module Namespaced
end
class Firm < Company
+ to_param :name
+
has_many :clients, -> { order "id" }, :dependent => :destroy, :before_remove => :log_before_remove, :after_remove => :log_after_remove
has_many :unsorted_clients, :class_name => "Client"
has_many :unsorted_clients_with_symbol, :class_name => :Client