« All deprecation guides
Deprecation Guide for Non Explicit Relationships
Deprecates when polymorphic relationships are detected via inheritance or mixins and no polymorphic relationship configuration has been setup.
For further reading please review RFC#793 which introduced support for explicit relationship polymorphism without mixins or inheritance.
You may still use mixins and inheritance to setup your polymorphism; however, the class structure is no longer what drives the design. Instead polymorphism is "traits" based or "structural": so long as each model which can satisfy the polymorphic relationship defines the inverse in the same way they work.
Notably: inverse: null
relationships can receive any type as a record with no additional configuration at all.
Example Polymorphic Relationship Configuration:
// polymorphic relationship
class Tag extends Model {
@hasMany('taggable', { async: false, polymorphic: true, inverse: 'tags' })
tagged;
}
// an inverse concrete relationship (e.g. satisfies "taggable")
class Post extends Model {
@hasMany('tag', { async: false, inverse: 'tagged', as: 'taggable' }) tags;
}