yii\rest\CreateAction does not trigger beforeSave()

I am making rest api in yii2. To update the timestamp and created_by,updated_by attributes while creating new record, I am using TimestampBehavior and BlameableBehavior as mentioned in the docs. I havent changed the default CreateAction class that yii2 is shipped with. What can be the reason? I am getting validation error "created_on" and "created_by" cannot be blank. Also when I debug and put a pointer inside beforeSave() of BaseActiveRecord, the method seems not to be called.

Notably the TimestampBehavior and BlameableBehavior are working fine while updating a record. "updated_on" and "updated_by" fields are correctly updated in this scenario.

The behavior in model is this:

    public function behaviors()


        return [

            'timestamp' => [

                'class' => TimestampBehavior::className(),

                'attributes' => [

                    ActiveRecord::EVENT_BEFORE_INSERT => ['created_on', 'updated_on'],

                    ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_on'],


                'value' => new Expression('NOW()'),


            'blameable' => [

                'class' => BlameableBehavior::className(),

                'createdByAttribute' => 'created_by',

                'updatedByAttribute' => 'updated_by',




The CreateAction class (which I havent changed) looks like this:

class CreateAction extends Action



     * @var string the scenario to be assigned to the new model before it is validated and saved.


    public $scenario = Model::SCENARIO_DEFAULT;


     * @var string the name of the view action. This property is need to create the URL when the model is successfully created.


    public $viewAction = 'view';


     * Creates a new model.

     * @return \yii\db\ActiveRecordInterface the model newly created

     * @throws ServerErrorHttpException if there is any error when creating the model


    public function run()


        if ($this->checkAccess) {

            call_user_func($this->checkAccess, $this->id);


        /* @var $model \yii\db\ActiveRecord */

        $model = new $this->modelClass([

            'scenario' => $this->scenario,


        $model->load(Yii::$app->getRequest()->getBodyParams(), '');

        if ($model->save()) {

            $response = Yii::$app->getResponse();


            $id = implode(',', array_values($model->getPrimaryKey(true)));

            $response->getHeaders()->set('Location', Url::toRoute([$this->viewAction, 'id' => $id], true));

        } elseif (!$model->hasErrors()) {

            throw new ServerErrorHttpException('Failed to create the object for unknown reason.');


        return $model;