Skip to content

Commit

Permalink
fixed has many on unsaved record
Browse files Browse the repository at this point in the history
  • Loading branch information
syntacticx committed Feb 13, 2009
1 parent 43b63b4 commit 93fbab5
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions src/active_record/relationships/has_many.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,11 @@ ActiveRecord.ClassMethods.hasMany = function hasMany(related_model_name, options
}, related_model_name, foreign_key);

instance_methods['get' + relationship_name + 'List'] = ActiveSupport.curry(function getRelatedList(related_model_name, foreign_key, params){
var id = this.get(this.constructor.primaryKeyName);
if(!id)
{
return [];
}
if(!params)
{
params = {};
Expand All @@ -119,12 +124,17 @@ ActiveRecord.ClassMethods.hasMany = function hasMany(related_model_name, options
{
params.where = {};
}
params.where[foreign_key] = this.get(this.constructor.primaryKeyName);
params.where[foreign_key] = id;
params.all = true;
return ActiveRecord.Models[related_model_name].find(params);
}, related_model_name, foreign_key);

instance_methods['get' + relationship_name + 'Count'] = ActiveSupport.curry(function getRelatedCount(related_model_name, foreign_key, params){
var id = this.get(this.constructor.primaryKeyName);
if(!id)
{
return 0;
}
if(!params)
{
params = {};
Expand All @@ -133,25 +143,27 @@ ActiveRecord.ClassMethods.hasMany = function hasMany(related_model_name, options
{
params.where = {};
}
params.where[foreign_key] = this.get(this.constructor.primaryKeyName);
params.where[foreign_key] = id;
return ActiveRecord.Models[related_model_name].count(params);
}, related_model_name, foreign_key);

instance_methods['build' + relationship_name] = ActiveSupport.curry(function buildRelated(related_model_name, foreign_key, params){
var id = this.get(this.constructor.primaryKeyName);
if(!params)
{
params = {};
}
params[foreign_key] = this.get(this.constructor.primaryKeyName);
params[foreign_key] = id;
return ActiveRecord.Models[related_model_name].build(params);
}, related_model_name, foreign_key);

instance_methods['create' + relationship_name] = ActiveSupport.curry(function createRelated(related_model_name, foreign_key, params){
var id = this.get(this.constructor.primaryKeyName);
if(!params)
{
params = {};
}
params[foreign_key] = this.get(this.constructor.primaryKeyName);
params[foreign_key] = id;
return ActiveRecord.Models[related_model_name].create(params);
}, related_model_name, foreign_key);
}
Expand Down

0 comments on commit 93fbab5

Please sign in to comment.