I'm refactoring some code related to autosaving associations.
While doing this, I came across some code which doesn't seem to do
anything, or rather, no tests fail when this code is disabled.
http://github.com/rails/rails/blob/b6e56efe07cb3c2e999216f995403aa9206226a2/activerecord/lib/active_record/associations.rb#L1027
I tried to write a failing test:
def test_case_name
treasure = Treasure.new(:name => 'gold')
treasure.save!
treasure.looter = Pirate.new(:catchphrase => 'yarr')
treasure.save!
assert_equal 'Pirate', treasure.reload.looter_type
end
However, with the offending line of code removed the test still passes.
So it seems that the looter_type (:foreign_type) is being set from
somewhere else before getting to the before_save callback.
If this code isn't necessary anymore it would clean up nicely, since
the 2 belongs_to before_save callbacks are almost identical. So any
info would be appreciated.
Cheers,
Eloy