Make missed association exception message more informative

Add target class name, which should have missed association on preload,
into exception message to simplify detecting problem part.
This commit is contained in:
Paul Nikitochkin 2013-10-12 16:39:09 +03:00
parent 365110196a
commit 625cd69a8b
2 changed files with 9 additions and 3 deletions

@ -1,3 +1,9 @@
* For missed association exception message
which is raised in `ActiveRecord::Associations::Preloader` class
added owner record class name in order to simplify to find problem code.
*Paul Nikitochkin*
* `has_and_belongs_to_many` is now transparently implemented in terms of
`has_many :through`. Behavior should remain the same, if not, it is a bug.

@ -153,13 +153,13 @@ def records_by_reflection(association, records)
records.group_by do |record|
reflection = record.class.reflect_on_association(association)
reflection || raise_config_error(association)
reflection || raise_config_error(record, association)
end
end
def raise_config_error(association)
def raise_config_error(record, association)
raise ActiveRecord::ConfigurationError,
"Association named '#{association}' was not found; " \
"Association named '#{association}' was not found on #{record.class.name}; " \
"perhaps you misspelled it?"
end