2016-08-24 1 views
2

У меня есть модель с именем User. Могу ли я продлить еще одну модель Admin/mod от модели пользователя? Я нашел документ secelize, но я не узналМожет ли ORM преследовать полиморфизм?

+0

Это действительно не поддерживается в настоящее время, но есть несколько способов сделать подобные конструкции с использованием Sequelize. Основное обсуждение можно найти по адресу: https://github.com/sequelize/sequelize/issues/1307 – iwasrobbed

ответ

2

Да, посмотрите Associations documentation, или более полно в Scopes documentation.

Из документов:

this.Comment = this.sequelize.define('comment', { 
    title: Sequelize.STRING, 
    commentable: Sequelize.STRING, 
    commentable_id: Sequelize.INTEGER 
}); 

this.Comment.prototype.getItem = function() { 
    return this['get' + this.get('commentable').substr(0, 1).toUpperCase() + this.get('commentable').substr(1)](); 
}; 

this.Post.hasMany(this.Comment, { 
    foreignKey: 'commentable_id', 
    constraints: false, 
    scope: { 
    commentable: 'post' 
    } 
}); 
this.Comment.belongsTo(this.Post, { 
    foreignKey: 'commentable_id', 
    constraints: false, 
    as: 'post' 
}); 

this.Image.hasMany(this.Comment, { 
    foreignKey: 'commentable_id', 
    constraints: false, 
    scope: { 
    commentable: 'image' 
    } 
}); 
this.Comment.belongsTo(this.Image, { 
    foreignKey: 'commentable_id', 
    constraints: false, 
    as: 'image' 
}); 
Смежные вопросы