gpt4 book ai didi

ruby-on-rails - 在 json respond_with Rails 3.1 中包含 "type"属性

转载 作者:行者123 更新时间:2023-12-04 01:38:37 26 4
gpt4 key购买 nike

似乎当从 Rails 3.1 应用程序以 JSON 形式返回包含“type”属性的对象时,不包括“type”属性。假设我有以下内容:

带有相应 STI 表 Animal 的模型。
继承 Animal 的 Cat、Dog 和 Fish 模型。

通过 JSON 返回 Animal 时,我希望包含“type”列,但这并没有发生:

jQuery.ajax("http://localhost:3001/animals/1", {dataType: "json"});

产量:
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}"

这似乎是 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}"

有谁知道这种行为背后的原因,以及如何覆盖它?

最佳答案

覆盖 as_json方法。它被 to_json 使用以产生输出。您可以执行以下操作:

def as_json options={}
{
id: id,
can_swim: can_swim,
type: type
}
end

关于ruby-on-rails - 在 json respond_with Rails 3.1 中包含 "type"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8945846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com