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();

            $response->setStatusCode(201);

            $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;

    }

}