mirror of https://github.com/rails/rails
Merge pull request #13785 from kuldeepaggarwal/fix-find_with_multiple_ids
Fix `ActiveRecord::RecordNotFound` error message with custom primary key
This commit is contained in:
commit
220ee0c74a
|
@ -311,9 +311,9 @@ module ActiveRecord
|
|||
conditions = " [#{conditions}]" if conditions
|
||||
|
||||
if Array(ids).size == 1
|
||||
error = "Couldn't find #{@klass.name} with #{primary_key}=#{ids}#{conditions}"
|
||||
error = "Couldn't find #{@klass.name} with '#{primary_key}'=#{ids}#{conditions}"
|
||||
else
|
||||
error = "Couldn't find all #{@klass.name.pluralize} with IDs "
|
||||
error = "Couldn't find all #{@klass.name.pluralize} with '#{primary_key}': "
|
||||
error << "(#{ids.join(", ")})#{conditions} (found #{result_size} results, but was looking for #{expected_size})"
|
||||
end
|
||||
|
||||
|
|
|
@ -951,14 +951,23 @@ class FinderTest < ActiveRecord::TestCase
|
|||
end
|
||||
|
||||
def test_find_one_message_with_custom_primary_key
|
||||
Toy.primary_key = :name
|
||||
begin
|
||||
Toy.find 'Hello World!'
|
||||
rescue ActiveRecord::RecordNotFound => e
|
||||
assert_equal 'Couldn\'t find Toy with name=Hello World!', e.message
|
||||
table_with_custom_primary_key do |model|
|
||||
model.primary_key = :name
|
||||
e = assert_raises(ActiveRecord::RecordNotFound) do
|
||||
model.find 'Hello World!'
|
||||
end
|
||||
assert_equal %Q{Couldn't find MercedesCar with 'name'=Hello World!}, e.message
|
||||
end
|
||||
end
|
||||
|
||||
def test_find_some_message_with_custom_primary_key
|
||||
table_with_custom_primary_key do |model|
|
||||
model.primary_key = :name
|
||||
e = assert_raises(ActiveRecord::RecordNotFound) do
|
||||
model.find 'Hello', 'World!'
|
||||
end
|
||||
assert_equal %Q{Couldn't find all MercedesCars with 'name': (Hello, World!) (found 0 results, but was looking for 2)}, e.message
|
||||
end
|
||||
ensure
|
||||
Toy.reset_primary_key
|
||||
end
|
||||
|
||||
def test_find_without_primary_key
|
||||
|
@ -979,4 +988,12 @@ class FinderTest < ActiveRecord::TestCase
|
|||
ActiveRecord::Base.send(:replace_bind_variables, statement, vars)
|
||||
end
|
||||
end
|
||||
|
||||
def table_with_custom_primary_key
|
||||
yield(Class.new(Toy) do
|
||||
def self.name
|
||||
'MercedesCar'
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue