+ get_association: (routes, context, options) ->\r
+ console.log 'get_association'\r
+ routes = [routes] if _.isString(routes)\r
+ console.log routes\r
+ route = routes.shift()\r
+ if _.isEmpty(routes)\r
+ # fetching terminate association. callback\r
+ console.log 'fetching terminate association'\r
+ cxt = options.context || context\r
+ @fetch_association(route, cxt, {\r
+ success: (association_item, options) =>\r
+ console.log 'success'\r
+ console.log association_item\r
+ console.log options\r
+ options.success.call(context, association_item)\r
+ context: context,\r
+ options: options\r
+ })\r
+ else\r
+ # fetching through associations\r
+ console.log 'fetching through associations'\r
+ @fetch_association(route, this, {\r
+ success: (association_item, options) =>\r
+ console.log 'success'\r
+ console.log association_item\r
+ console.log options\r
+ association_item.get_association(routes, this, options)\r
+ context: context,\r
+ options: options\r
+ })\r
+ \r
+ fetch_association: (name, context, options) =>\r
+ console.log context\r
+ console.log options\r
+ a = @my_class().my_manifest().associations\r
+ fetch_options = {\r
+ success: (association_item) =>\r
+ options.success.call(context, association_item, options.options)\r
+ }\r
+ if a.belongs_to[name]\r
+ console.log 'belongs_to'\r
+ console.log name\r
+ @get_parent(name, context, fetch_options)\r
+ else if a.has_many[name]\r
+ console.log 'has_many'\r
+ console.log name\r
+ @get_children(name, context, fetch_options)\r
+ else if a.has_one[name]\r
+ console.log 'has_one'\r
+ console.log name\r
+ @get_child(name, context, fetch_options)\r
+ else\r
+ console.error('association does not exist in model manifest')\r
+ \r