to_json中的Mongoid虚拟属性

时间:2013-03-28 21:56:24

标签: ruby-on-rails mongoid

我试图让一些虚拟(非持久化)属性显示在一些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_attribute没有出现在json中。我做错了什么?

编辑 - 好的,所以我想我的实际问题是我无法弄清楚如何在嵌套在其中的每个对象数组上调用virtual_attribute方法根对象。

1 个答案:

答案 0 :(得分:0)

to_json将选项直接传递给数组和对象。 :include只是一个Mongoid事物:

render json: @val.to_json(methods: :virtual_attribute)