The same problem persists after all these 11 years.
The way I found to circumvent it was to create both a class AND an instance method called "create".
The class method calls:
def create(...)
  new(...).create
end
and the logic with the run_callbacks exists inside the instance method, also called create