The way I'm doing it is to use Path Rules module to check the CiviCRM URL for the transact page.
So we look for the path say /civicrm/contribute/transact?reset=1&id=1
That triggers the rule. We then fetch the CiviCRM contact entity for the current user.
The Contact entity has all of the custom data in it.
We pass that to a rule component that evaluates a custom field value and does an action as appropriate.
So this rule could be used in a situation where a user has to complete a complex professional registration procedure using Webform CiviCRM, where a profile is not appropriate. Upon completion they are directed to a membership renewal page.
If they try to access the renewal page first, without having made the declaration they are redirected back to the webform.