如何使belongs_to模型的id在JSON响应中无效

时间:2015-01-22 06:21:02

标签: ruby-on-rails mongoid

我通过render json: Oj.dump(ReportTypeSymbol.all.to_a)

得到以下回复

当前JSON格式

report_type: "com_disagg",
symbol_code_id: {
$oid: "54bf7ff1506f6336e3020000"
}

预期的JSON格式(不嵌套symbol_code_id

report_type: "com_disagg",
symbol_code_id: "54bf7ff1506f6336e3020000"

模型定义

    class ReportTypeSymbol
      include Mongoid::Document
      belongs_to :symbol_code
    end

2 个答案:

答案 0 :(得分:0)

您可以在模型中覆盖as_json方法。

答案 1 :(得分:0)

这就是我所做的。它也适用于嵌套关系。 基本上它是猴子修补Mongoid文档和BSON对象。

在初始化程序(Rails)中创建一个Mongoid.rb文件

module Mongoid
  module Document
    def as_json(options={})
      attrs = super(options)
      attrs['id'] = attrs.delete('_id').to_s
      attrs
    end
  end
end

module BSON
  class ObjectId
    alias :to_json :to_s
    alias :as_json :to_s
  end
end