2012-08-03 11 views
13

Digamos que mis modelos carriles aspecto:Cómo subclase o heredar un modelo de otro modelo usando brasa datos

class SalesRelationship < ActiveRecord 

end 

que se hereda por crossSell así:

class crossSell < SalesRelationship 

end 

¿Cómo muestro esta relación de herencia en Ember-Data? ¿Cuál es la mejor práctica para esto:

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

¿Puedo crear una subclase llamada 'crossSell', como este

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

o como esto

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

Respuesta

13

Bastante cerca, puede extender SalesRelationship.

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

En Ember 2.7 se puede hacer así. Suponga que tiene una clase Person y desea heredar de él para hacer un Employee para un campo de estado (como contratado, se retiró, disparó contra-dejar etc.)

app/modelos/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')}`; 
}); 

app/models/employee.js

import DS from 'ember-data'; 

import Person from './person'; 

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

¿Qué tal 'import Person from './person';' en su lugar, ya que ambos modelos están en la misma carpeta. – Caltor

+1

@ Caller Gracias, actualicé el código :) ¡Buena captura! – rmcsharry

+0

Perfecto, muchas gracias! –

Cuestiones relacionadas