Parece que al devolver un objeto que contiene un atributo "tipo" como JSON desde una aplicación Rails 3.1, el atributo "tipo" no está incluido. Supongamos que tengo lo siguiente:Incluyendo el atributo "tipo" en json reply_with Rails 3.1
Un modelo con la correspondiente tabla STI Animal. Modelos Cat, Dog y Fish que heredan Animal.
Al devolver un animal a través de JSON, deseo incluir la columna "tipo", pero esto no está ocurriendo:
jQuery.ajax("http://localhost:3001/animals/1", {dataType: "json"});
rendimientos:
responseText: "{"can_swim":false,"created_at":"2012-01-20T17:55:16Z","id":1,"name":"Fluffy","updated_at":"2012-01-20T17:55:16Z","weight":9.0}"
Parece que este es un problema con to_json:
bash-3.2$ rails runner 'p Animal.first.to_yaml'
"--- !ruby/object:Cat\nattributes:\n id: 1\n type: Cat\n weight: 9.0\n name: Fluffy\n can_swim: false\n created_at: 2012-01-20 17:55:16.090646000 Z\n updated_at: 2012-01-20 17:55:16.090646000 Z\n"
bash-3.2$ rails runner 'p Animal.first.to_json'
"{\"can_swim\":false,\"created_at\":\"2012-01-20T17:55:16Z\",\"id\":1,\"name\":\"Fluffy\",\"updated_at\":\"2012-01-20T17:55:16Z\",\"weight\":9.0}"
¿Alguien conoce el razonamiento detrás de este comportamiento y cómo anularlo?
Excelente, gracias - ¡esto parece hacer el truco! – cyrusd
Esto parece un buen compromiso para reducir la redundancia: def as_json (opciones = {}) {tipo: tipo} .merge super final – cyrusd
De nada. Me gusta sobrescribir as_json porque sé cómo estoy convirtiendo mis objetos a JSON y solo estoy convirtiendo lo que realmente necesito convertir. – lucapette