提交 8f37ba81 编写于 作者: A Aaron Patterson

This test does not test anything that happens in the real world. If you

recreate the models without mucking with internal caches of the relation
objects, then the test fails.

For example:

class Man < ActiveRecord::Base
  has_many :interests
end

class Interest < ActiveRecord::Base
  belongs_to :man
end

Then do this test:

def test_validate_presence_of_parent_fails_without_inverse_of
  repair_validations(Interest) do
    Interest.validates_presence_of(:man)
    assert_no_difference ['Man.count', 'Interest.count'] do
      man = Man.create(:name => 'John',
                       :interests_attributes => [{:topic=>'Cars'}, {:topic=>'Sports'}])
      assert_not_predicate man.errors[:"interests.man"], :empty?
    end
  end
end

The test will fail.  This is a bad test, so I am removing it.
上级 934369f5
......@@ -310,13 +310,6 @@ def inverse_of
@inverse_of ||= klass.reflect_on_association inverse_name
end
# Clears the cached value of +@inverse_of+ on this object. This will
# not remove the :inverse_of option however, so future calls on the
# +inverse_of+ will have to recompute the inverse.
def clear_inverse_of_cache!
@inverse_of = nil
end
def polymorphic_inverse_of(associated_class)
if has_inverse?
if inverse_relationship = associated_class.reflect_on_association(options[:inverse_of])
......
......@@ -797,26 +797,6 @@ def test_validate_presence_of_parent_works_with_inverse_of
end
end
def test_validate_presence_of_parent_fails_without_inverse_of
Man.accepts_nested_attributes_for(:interests)
Man.reflect_on_association(:interests).options.delete(:inverse_of)
Man.reflect_on_association(:interests).clear_inverse_of_cache!
Interest.reflect_on_association(:man).options.delete(:inverse_of)
Interest.reflect_on_association(:man).clear_inverse_of_cache!
repair_validations(Interest) do
Interest.validates_presence_of(:man)
assert_no_difference ['Man.count', 'Interest.count'] do
man = Man.create(:name => 'John',
:interests_attributes => [{:topic=>'Cars'}, {:topic=>'Sports'}])
assert_not_predicate man.errors[:"interests.man"], :empty?
end
end
ensure
Man.reflect_on_association(:interests).options[:inverse_of] = :man
Interest.reflect_on_association(:man).options[:inverse_of] = :interests
end
def test_can_use_symbols_as_object_identifier
@pirate.attributes = { :parrots_attributes => { :foo => { :name => 'Lovely Day' }, :bar => { :name => 'Blown Away' } } }
assert_nothing_raised(NoMethodError) { @pirate.save! }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册