0

一部の Mongoid モデルの JSON 表現に表示される仮想 (永続化されていない) 属性を取得しようとしていますが、それを機能させることができないようです:

class MyModel
  include Mongoid::Document

  def virtual_attribute
    @my_attribute || false
  end

  def virtual_attribute=(value)
    @my_attribute=value
  end
end

class MyController
  def myaction
    false_values=MyModel.where( whatever )
    true_values=MyModel.where( something_else ).map{ |model| model.virtual_attribute=true }
    @val['my_models']=false_values+true_values
    render json: @val.to_json( :include => {:my_models => {:methods => %w(virtual_attribute)}} )
  end
end

virtual_attributejson には表示されません。私は何を間違っていますか?

編集- わかりました。私の実際の問題はvirtual_attribute、ルート オブジェクトにネストされたオブジェクトの配列のそれぞれでメソッドを呼び出す方法がわからないことだと思います。

4

1 に答える 1

0

to_jsonオプションを配列とオブジェクトに直接渡します。:includeモンゴイドのものだけです:

render json: @val.to_json(methods: :virtual_attribute)
于 2013-03-29T13:44:55.637 に答える