不要怂,就是干,撸起袖子干!

Commit 314d21ea by Mick Hansen

fix(associations): regression in hasMany pairing introduced with through scopes, fixes #2316

1 parent e63af574
......@@ -106,10 +106,10 @@ module.exports = (function() {
}
// If through is not default, determine pairing by through value (model/string)
else {
paired = self.options.through === association.options.through ||
self.options.through === (association.options.through && association.options.through.model) ||
(self.options.through && self.options.through.model) === (association.options.through && association.options.through.model) ||
(self.options.through && self.options.through.model) === association.options.through;
paired = (self.options.through === association.options.through) ||
(self.options.through === association.options.through.model) ||
(self.options.through.model && association.options.through.model && (self.options.through.model === association.options.through.model)) ||
(self.options.through.model === association.options.through);
}
// If paired, set properties identifying both associations as double linked, and allow them to each eachtoerh
if (paired) {
......@@ -294,7 +294,6 @@ module.exports = (function() {
if (this.targetAssociation.foreignIdentifier) {
this.targetAssociation.foreignIdentifierField = this.through.model.rawAttributes[this.targetAssociation.foreignIdentifier].field || this.targetAssociation.foreignIdentifier;
}
this.through.model.init(this.through.model.daoFactoryManager);
} else {
var newAttributes = {};
......
......@@ -2089,16 +2089,20 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
describe('project has owners and users and owners and users have projects', function() {
beforeEach(function() {
this.Project.hasMany(this.User, { as: 'owners', through: 'projectOwners'});
this.Project.hasMany(this.User, { as: 'users', through: 'projectUsers'});
this.User.hasMany(this.Project, { as: 'owners', through: 'projectOwners'});
this.User.hasMany(this.User, { as: 'users', through: 'projectUsers'});
this.User.hasMany(this.Project, { as: 'ownedProjects', through: 'projectOwners'});
this.User.hasMany(this.Project, { as: 'memberProjects', through: 'projectUsers'});
return this.sequelize.sync({ force: true });
});
it('correctly pairs associations', function () {
expect(this.Project.associations.owners.targetAssociation).to.equal(this.User.associations.ownedProjects);
expect(this.Project.associations.users.targetAssociation).to.equal(this.User.associations.memberProjects);
});
it('correctly sets user and owner', function() {
var self = this;
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!