Nicer error message on has_many :through when :through reflection can not be found (closes #4042) [court3nay@gmail.com]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3910 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson
2006-03-18 03:39:18 +00:00
parent 9bd7db4a98
commit df97ed5e4c
4 changed files with 11 additions and 1 deletions

View File

@@ -47,6 +47,8 @@
has_many :attachments, :as => :attachable, :dependent => :delete_all
end
* Nicer error message on has_many :through when :through reflection can not be found. #4042 [court3nay@gmail.com]
* Upgrade to Transaction::Simple 1.3 [Jamis Buck]
* Catch FixtureClassNotFound when using instantiated fixtures on a fixture that has no ActiveRecord model [Rick Olson]

View File

@@ -61,7 +61,9 @@ module ActiveRecord
end
def construct_conditions
through_reflection = @owner.class.reflections[@reflection.options[:through]]
unless through_reflection = @owner.class.reflections[@reflection.options[:through]]
raise ActiveRecordError, "Could not find the association '#{@reflection.options[:through]}' in model #{@reflection.klass}"
end
if through_reflection.options[:as]
conditions =

View File

@@ -207,6 +207,10 @@ class AssociationsJoinModelTest < Test::Unit::TestCase
assert posts(:welcome, :reload)[:taggings_count].zero?
end
def test_unavailable_through_reflection
assert_raises (ActiveRecord::ActiveRecordError) { authors(:david).nothings }
end
private
# create dynamic Post models to allow different dependency options
def find_post_with_dependency(post_id, association, association_name, dependency)

View File

@@ -22,6 +22,8 @@ class Author < ActiveRecord::Base
has_many :categorizations
has_many :categories, :through => :categorizations
has_many :nothings, :through => :kateggorisatons, :class_name => 'Category'
attr_accessor :post_log