fph*_*ipe 7 json ruby-on-rails
使用:methods时to_json,有没有办法重命名密钥?我正在尝试用它的base62版本替换真实的id,我希望base62_id得到密钥的值:id.
@obj.to_json(
:except => :id
:methods => :base62_id
)
Run Code Online (Sandbox Code Playgroud)
我试着这样做
@obj.to_json(
:except => :id
:methods => { :id => :base62_id }
)
Run Code Online (Sandbox Code Playgroud)
但那没用.
有什么建议?
序列化器to_json使用方法的名称作为序列化的键。所以你不能使用methods这个选项。不幸的是to_json方法不会t accept阻止`参数,否则你可以做类似的事情
@obj.to_json(:except => :id) {|json| json.id = base62_id }
Run Code Online (Sandbox Code Playgroud)
所以这给我们留下了一个丑陋的黑客,例如:
def to_json(options={})
oid, self.id = self.id, self.base62_id(self.id)
super
ensure
self.id = oid
end
Run Code Online (Sandbox Code Playgroud)
现在to_json将返回预期的结果。
| 归档时间: |
|
| 查看次数: |
1931 次 |
| 最近记录: |