【问题标题】:Rails 5.2 API - Returning enum value in JSONRails 5.2 API - 返回 JSON 中的枚举值
【发布时间】:2019-08-06 16:34:30
【问题描述】:

我目前在我的用户列中有一个 postgres 枚举类型设置为roles。它按预期工作。

例子:

class User < ApplicationRecord
  enum role: { admin: "Admin", viewer: "Viewer" } 
end

JSON 响应将其返回为:

{
  "id": 1,
  "role": "admin"
}

但是,role 属性返回的是键而不是枚举值。有解决办法吗?

【问题讨论】:

    标签: ruby-on-rails json postgresql api response


    【解决方案1】:

    试试这个

    def as_json(options = {})
      super.tap do |hash|
        hash['role'] = User::roles[role]
      end
    end
    

    【讨论】:

    • 这也适用于我。很遗憾,我必须彻底破解我的方法才能让枚举为 Rails 工作。谢谢。
    【解决方案2】:

    我会这样做。在User模型文件中

    def role_id
      User.roles[self.role]
    end
    

    然后你role_id方法

    【讨论】:

    • 您是否知道是否有其他解决方案?我想保留它,以便我的 JSON 反映我拥有的表格。在这种情况下,我必须在 as_json 中公开该方法。
    • 不,很抱歉,这是我找到的唯一方法。如果您找到更好的方法,请告诉我:)
    猜你喜欢
    • 2015-11-28
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多