Нет. Там нет такой опции. Возможно, потому что это не очень хорошая идея, так как это действительно увеличит сложность и вызовет массу нежелательных побочных эффектов.
И это также не нужно, так как вы можете добиться того же, украшая метод:
module MyApp
module Assocations
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def decorate_association(**options, &block)
yield AssocationDecorator.new(self, options)
end
end
class AssocationDecorator
attr_accessor :options, :klass
def initialize(klass, **options)
@klass = klass
@options = options
end
def has_many(name, scope = nil, **options, &extension)
@klass.has_many(name, scope, options.reverse_merge(@options), &extension)
end
end
end
end
class Account < ActiveRecord
include MyApp::Assocations
decorate_association(before_remove: :callback, source: :user) do |decorator|
decorator.has_many :clients
end
end