【问题标题】:Changing attribute name in record objects更改记录对象中的属性名称
【发布时间】:2013-04-18 10:11:55
【问题描述】:

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

@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

【问题讨论】:

  • 你到底为什么需要那个?
  • 说来话长。感谢 Objective-C。

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


【解决方案1】:

您可以滥用 ActiveRecord select 方法:

@groups = Group.select("id AS group_id, owner_id, name,...")

【讨论】:

    【解决方案2】:

    您可以覆盖Group 类的as_json 方法中的名称:

    def as_json(*args)
        super.tap { |hash| hash["group_id"] = hash.delete "id" }
    end
    

    见: Rails how to change attribute name when rendering json?

    【讨论】:

    • 你的搜索技巧比我强多了。
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 2021-08-21
    • 2020-07-06
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多