这是我的模型
class Client < Sequel::Model(:clients)
end
Run Code Online (Sandbox Code Playgroud)
当我执行
Client.first.to_json
Run Code Online (Sandbox Code Playgroud)
我得到
"\"#<Client:0x2594b824>\""
Run Code Online (Sandbox Code Playgroud)
但是当我执行
DB[:clients].first.to_json
Run Code Online (Sandbox Code Playgroud)
我正确地得到:
{id: 1, name: "Someone" ... }
Run Code Online (Sandbox Code Playgroud)
我做错了什么?...我也尝试使用Client.dataset.first.json具有相同的结果。
此外,我正在使用 MS Access DB,但我认为这并不重要。
该json库(Ruby的标准库的一部分),和其他宝石如的ActiveSupport,与猴子补丁的对象to_json可能是怎样获取调用,而不是一个具体方法to_json由续集提供的方法,知道如何将转换Sequel::Model实例JSON。这是猜测我会感到惊讶的是,JSON库猴子补丁比其他任何东西String,Array,Hash等。
使用时,DB[:clients].first您可能会返回Hash具有to_json方法的a ,其中 asClient.first返回一个模型实例,该实例不由to_jsonjson 库提供的泛型方法处理。
尝试注册 Sequel JSON 插件,这应该优先于猴子补丁to_json方法:
Sequel::Model.plugin :json_serializer
Run Code Online (Sandbox Code Playgroud)
顺便说一下,这是一个很好的指标,说明为什么猴子修补通常是一个坏主意,尤其是对库/宝石命名空间之外的类进行猴子修补。
| 归档时间: |
|
| 查看次数: |
1446 次 |
| 最近记录: |