Строим блог на Areto фреймворк

Модель комментария

Класс Comment наследуется от класса из публичной части блога.

Модель комментария

В модуле администрирования требуется редактировать статус комментария. Для этого к унаследованным правилам добавляется валидация статуса по указанному диапазону значений.

module/admin/model/Comment.js

const Base = require('../../../model/Comment');
module.exports = class Comment extends Base {
  static getConstants () {
    return {
      RULES: this.RULES.concat([
        ['status', 'range', {range: [
          this.STATUS_PENDING,
          this.STATUS_APPROVED,
          this.STATUS_REJECTED
        ]}]
      ]),
      ATTR_VALUE_LABELS: {
        'status': {
          [this.STATUS_PENDING]: 'Pending',
          [this.STATUS_APPROVED]: 'Approved',
          [this.STATUS_REJECTED]: 'Rejected'
        }
      }
    };
  }
  // place methods here
};
module.exports.init(module);
const Article = require('./Article');

Метод findBySearch ищет комментарии, у которых текст, имя автора или email содержат указанный текст.

module/admin/model/Comment.js

static findBySearch (text) {
  if (!text) {
    return this.find();
  }
  return this.find(['OR',
    ['LIKE', 'content', `%${text}%`],
    {name: text},
    {email: text}
  ]);
}

Отношение relArticle определяет статью, к которой относится комментарий.

module/admin/model/Comment.js

relArticle () {
  return this.hasOne(Article, Article.PK, 'articleId');
}