更改记录对象中的属性名称

时间:2013-04-24 18:03:54

标签: ruby-on-rails ruby-on-rails-3 activerecord hash attributes

我有一个查询,从表中选择一组记录。

@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

2 个答案:

答案 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,...")