2012-08-03 11 views
13

मान लीजिए कि मेरी रेल मॉडल इस तरह देखें:कैसे उपवर्ग या एंबर-डेटा का उपयोग कर एक और मॉडल से एक मॉडल के वारिस को

class SalesRelationship < ActiveRecord 

end 

कौन सा crosssell द्वारा इस तरह विरासत में मिला है:

class crossSell < SalesRelationship 

end 

मैं इस विरासत संबंध को एम्बर-डेटा में कैसे दिखाऊं। इसके लिए सबसे अच्छा तरीका क्या है:

App.salesRelationship = DS.Model.extend({ 
    name: DS.attr('string') 
}); 

मैं इस

crossSell = App.salesRelationship({ 
    productName: DS.attr('string') 
}); 

की तरह, एक उपवर्ग 'crosssell' कहा जाता है बना सकते हैं या इस तरह

App.salesRelationship.crossSell = DS.Model.extend({ 
    productName: DS.attr('string') 
    }); 

उत्तर

13

सुंदर बंद कर सकते हैं, तो आप केवल SalesRelationship का विस्तार कर सकते हैं।

App.CrossSell = App.SalesRelationship.extend({ 
    productName: DS.attr('string') 
}) 
6

एम्बर 2.7 में ऐसा किया जा सकता है। मान लें कि आप एक Person वर्ग है और यह से विरासत के लिए एक स्थिति फ़ील्ड के लिए एक Employee बनाने के लिए

एप्लिकेशन/मॉडल/person.js (किराए पर लिया जैसे, सेवानिवृत्त, ऑन-छोड़ आदि निकाल दिया) इच्छा

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    firstName: DS.attr(), 
    lastName: DS.attr(), 
    fullName: Ember.computed('firstName', 'lastName', function() { 
    return `${this.get('lastName')}, ${this.get('firstName')}`; 
}); 

ऐप/मॉडल/कर्मचारी.जेएस

import DS from 'ember-data'; 

import Person from './person'; 

export default Person.extend({ 
    status: DS.attr(), 
    statusCode: DS.attr(), 
}); 
+1

'व्यक्ति से आयात करें' ./person 'के बारे में कैसे;' इसके बजाय दोनों मॉडल एक ही फ़ोल्डर में देख रहे हैं। – Caltor

+1

@Caltor धन्यवाद, मैंने कोड अपडेट किया :) अच्छा पकड़ो! – rmcsharry

+0

बिल्कुल सही, बहुत बहुत धन्यवाद! –