Я думаю, что это хороший вариант для использования skip_callback метод:
BusinessRule.skip_callback(:create, :before, :set_hierarchy)
# your code to create BusinessRule objects without setting hierarchy
# ...
BusinessRule.set_callback(:create, :before, :set_hierarchy)
Если вы собираетесь пропускать / устанавливать обратные вызовы довольно часто, вы можете упростить это, используя специальный метод помощи:
# config/initializers/without_callback.rb
module ActiveSupport::Callbacks::ClassMethods
def without_callback(*args, &block)
skip_callback(*args)
yield
set_callback(*args)
end
end
И вы сможете пропустить обратный вызов, как это:
BusinessRule.without_callback(:create, :before, :set_hierarchy) do
# your code to create BusinessRule objects without setting hierarchy
# ...
end