3

エイリアスでmongoid(2.6.0)を使用していますが、これが私のモデルフィールドの外観です。

class Place
  include Mongoid::Document
  field :n, :as => :name, :type => String
  ....

これで、場所を見つけてオブジェクトをjsonとして返すコントローラーができました。

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

今私がするとき

JSON.parse(response.body)

私の応答には、「名前」ではなく「n」としてフィールドが含まれています。

mongoidに実際の名前ではなくエイリアス名を返すように依頼する方法はありますか?

4

1 に答える 1

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
于 2013-03-18T10:11:43.277 に答える