Có vẻ như khi trả về một đối tượng có chứa thuộc tính "type" là JSON từ một ứng dụng Rails 3.1, thuộc tính "type" không được bao gồm. Giả sử tôi có những điều sau đây:Bao gồm thuộc tính "type" trong json respond_with Rails 3.1
Mô hình có bảng STI tương ứng. Mô hình Mèo, Chó và Cá thừa hưởng Động vật.
Khi trở về một động vật qua JSON, tôi muốn bao gồm các "loại" cột, nhưng điều này không xảy ra:
jQuery.ajax("http://localhost:3001/animals/1", {dataType: "json"});
sản lượng:
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}"
Nó có vẻ như đây là một vấn đề với 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}"
Có ai biết lý do đằng sau hành vi này và cách ghi đè hành vi này không?
Tuyệt vời, cảm ơn - điều này có vẻ như lừa! – cyrusd
Điều này có vẻ giống như một thỏa hiệp tốt đẹp để giảm dự phòng: def as_json (tùy chọn = {}) {type: type} .merge super end – cyrusd
Bạn được chào đón. Tôi thích ghi đè as_json vì tôi biết cách tôi thực sự chuyển đổi các đối tượng của mình thành JSON và tôi chỉ chuyển đổi những gì tôi thực sự cần chuyển đổi. – lucapette