使用mongoid通过json返回别名字段

Abh*_*avD 3 mongodb mongoid

我正在使用mongoid(2.6.0)及其别名,这就是我的模型字段的样子

class Place
  include Mongoid::Document
  field :n, :as => :name, :type => String
  ....
Run Code Online (Sandbox Code Playgroud)

现在我有一个控制器找到一个地方并将对象作为json返回

@places = Place.find({some query})
respond_to do |format|
  format.json { render json: @places }
end
Run Code Online (Sandbox Code Playgroud)

现在当我这样做

JSON.parse(response.body)
Run Code Online (Sandbox Code Playgroud)

我的回复包含字段"n"而不是"名称".

有没有办法可以让mongoid告诉我别名而不是实名?

goy*_*kit 6

那你可以尝试重写serializable_hash方法.只需在模型中添加这样的内容即可.

def serializable_hash(options)
  original_hash = super(options)
  Hash[original_hash.map {|k, v| [self.aliased_fields.invert[k] || k , v] }]
end
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!!正是我需要的 (2认同)