我有一个查询,从表中选择一组记录。
@groups = Group.all
其中一个属性id
与处理从控制器发送给它的JSON的前端框架不兼容。
我的问题是在@groups
中列出了一个群组列表后,如何将每个属性的ID更改为其他名称,即group_id
?
我不会将此用于观看或其他任何内容,我只需将密钥名称id
更改为group_id
。
例如,假设我运行@groups.first
。它应该返回......
=> #<Group id: 1, owner_id: 81, name: "my awesome group", updated_at: "2013-04-23 20:58:27", created_at: "2013-04-23 20:58:27">
当我将其格式化为json时,我有键值id: 1
。实际上我需要它group_id: 1
。
答案 0 :(得分:3)
您可以在as_json
类的Group
方法中覆盖名称:
def as_json(*args)
super.tap { |hash| hash["group_id"] = hash.delete "id" }
end
请参阅: Rails how to change attribute name when rendering json?
答案 1 :(得分:1)
您可以滥用ActiveRecord select
方法:
@groups = Group.select("id AS group_id, owner_id, name,...")