да, есть разные подходы.
из того, что я испытал и увидел до сих пор, вы можете работать с поведением здесь.
имя существующего поведения в этом направлении - "NamedScope" (найден в github) и другие, которые я не могу найти прямо сейчас.
но в принципе вы можете настроить именованные условия в вашей модели
public $scopes = array(
'public' => array('Model.active'=>1),
...
)
, который вы могли бы затем объединить в своих запросах и найти () вызовы:
array('scope'=>array('Model.public', 'OtherModel.approved', ...)
и т.д..
поведение объединяет их в один массив условий.