Hey there -
I apologize for taking so long to get back to you on this question. I've heard several folks ask about this in the past and each time there was either a misunderstanding of how validations work in state_machine or the use case was solved by a slight change in the implementation.
Just to make sure we're on the same page, when you run an event, this will do the following (abbreviated version):
1. Run before transitions
2. Set the new state
3. Validate the object
4. Save the object
5. Run after transitions
Typically you don't need to check validation, do something else, and then proceed with saving the object. Otherwise running the event would be sufficient since it'll return true / false if the validation does fail.
The only way to check validation without saving the object is by manually setting the state and running validations.
The other case where folks have been slightly confused about the behavior is that you can set :if / :unless conditionals on transition definitions
so that you can prevent a transition from occurring based on some attribute(s) on the object.
Without knowing anything further about your particularly use case, these are the best tips I can really give. Hope it provides some helps!
Best,
Aaron