【问题标题】:How to render enum as string not integer in mongoid (rails)?如何在mongoid(rails)中将枚举呈现为字符串而不是整数?
【发布时间】:2019-12-26 05:13:05
【问题描述】:

我正在使用 rails 和 mongoid gem。在 Mongoid 模型中使用 Enum 时,使用 extend Enumerize 的东西可以工作。但是在将数据作为 JSON 呈现到前端时(例如使用ModelName.where(condition)),枚举字段的响应不是枚举的字符串值,而是整数。

例子:

enumerize :field_name, in: { abc: 0, def: 5, ghi: 10 }, predicates: true, scope: :shallow

呈现的 json 看起来像:

{ "model_name": { "field_name": 5 //instead of "def" } } 任何帮助将不胜感激。

【问题讨论】:

  • 在渲染之前尝试 ModelName.where(condition).as_json
  • 谢谢,可惜没用

标签: ruby-on-rails mongodb enums mongoid


【解决方案1】:

这听起来类似于我不久前回答的一个问题: Rails 5.2 API - Returning enum value in JSON

def as_json(options = {})
  super.tap do |hash|
    hash['field_name'] = ModelName::enum[field_name]
  end
end

【讨论】:

  • 重新阅读问题后,我认为这不是正确答案。我会尝试@code_aks 的建议
  • 谢谢。会试试的。我尝试了类似的代码,但之前我将类似的代码放在了 mongoid 配置文件中。这似乎不起作用。但我会尝试将它放在模型文件中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多