Я думаю, что вы делаете что-то идеальное, но чтобы ответить на ваш вопрос:
В вашем классе AR добавьте член с именем $ tableName, а затем переопределите tableName (), чтобы вернуть ваш новый varialbe. Затем вы можете сделать что-то вроде:
$user = User::model()->findByPk(1);
$user->tableName = 'other_table';
$user->save();
(лучше установить имя таблицы)
Я не проверял это, но я не вижу причин, по которым это не сработало бы.