This project is archived and is in readonly mode.
Fixed AssociationCollection#<< resulting in unexpected values in @target when :uniq => true
-
Ernie Miller
Attaching updated patch.
-
wildchild
- Tag changed from activerecord, enhancement, patch to activerecord, bug, patch
+1 for this feature. Should we fire callbacks for already duplicate records?
In patch:
@target << record unless @reflection.options[:uniq] && @target.include?(record) callback(:after_add, record)
Why not:
unless @target.include?(record) @target << record unless @reflection.options[:uniq] callback(:after_add, record) end
Cheers.
-
Ernie Miller
I debated about that. In the end, since ActiveRecord doesn't actually prevent duplicate records in the DB, but only in the @target array, when :uniq is set, I felt it would be presumptuous to mess with callbacks. There could be a very legitimate bit of data massaging going on there.
-
Michael Koziarski
- Assigned user set to Michael Koziarski
Shouldn't it raise an exception if you try to do this? Silently ignoring the call seems like a potential cause of lots of bugs.
-
Michael Koziarski
- State changed from new to resolved
