title: Add associations from mixin without overwriting existing associations
body: <p>I have a number of classes like the below:</p>
  
  <pre><code>class Event &lt; ActiveRecord::Base
    include PreventUpdate
  
    has_many :participants, conditions: ...
    has_many :venues, conditions: ...
    has_many :companies, conditions: ...
  end
  </code></pre>
  
  <p>I have a module that handles prevent_update logic (obj is in past, obj is banned) for the classes, and as part of that it queries the including class for its has_many associations in order to write before_add hooks to those associations.</p>
  
  <pre><code>module PreventUpdate
    extend ::ActiveSupport::Concern
  
    included do 
      self.reflect_on_all_associations(:has_many).each do |assoc|
        has_many assoc.name, before_add: :prevent_update
      end
    end
  
    def prevent_update
      #core prevent update logic
    end
  
  end
  </code></pre>
  
  <p>The only problem is that the dynamically added and original has_many statements overwrite each other. Which overwrites which depends on where in the including class the module is included.</p>
  
  <p>Is there any way that the dynamically added and original declarations can "accumulate", i.e. the module's declaration can simply add on to the original without overwriting?</p>