Ticket #6822: has_many_after_update_callback_should_not_unnecessarily_load_association.diff
| File has_many_after_update_callback_should_not_unnecessarily_load_association.diff, 2.2 kB (added by canadaduane, 2 years ago) |
|---|
-
activerecord/test/associations/callbacks_test.rb
old new 122 122 "after_adding#{david.id}"], activerecord.developers_log 123 123 end 124 124 end 125 126 def test_has_many_after_update_callback_does_not_unnecessarily_load_association 127 david = authors(:david) 128 david.posts.create 129 assert !david.posts.loaded? 130 david.save 131 assert !david.posts.loaded? 132 end 125 133 end 126 134 -
activerecord/lib/active_record/associations.rb
old new 958 958 if association.respond_to?(:loaded?) 959 959 if new_record? 960 960 association 961 elsif association.loaded? 962 association.select { |record| record.new_record? } 961 963 else 962 association.select { |record| record.new_record? }964 [] 963 965 end.each do |record| 964 966 errors.add "#{association_name}" unless record.valid? 965 967 end … … 973 975 association = instance_variable_get("@#{association_name}") 974 976 975 977 if association.respond_to?(:loaded?) 976 if @new_record_before_save 977 records_to_save = association 978 else 979 records_to_save = association.select { |record| record.new_record? } 980 end 978 records_to_save = 979 if @new_record_before_save 980 association 981 elsif association.loaded? 982 association.select { |record| record.new_record? } 983 else 984 [] 985 end 981 986 records_to_save.each { |record| association.send(:insert_record, record) } 982 987 association.send(:construct_sql) # reconstruct the SQL queries now that we know the owner's id 983 988 end