Add a more generic build_from method to external

the existing `create_from` does a lot of things, including a call to `save(validate: false)`. This is a generic version that can be better adapted to your needs