如何获取to_json属性中的属性

时间:2011-08-21 05:09:31

标签: ruby-on-rails

我正在使用Rails 3,这是我的模型

class LineItem < ActiveRecord::Base
  attr_reader :price
  belongs_to :product
   def price
    self.product.price * self.quantity
  end

  def as_json(options = {})
    super(:include => [:product])
  end
end

以上代码有效。但是现在我希望我的json除了我得到的其他值之外还有price的值。

我如何做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用:methods

def as_json(options = {})
    super(options.merge(:include => [:product], :methods => [:price]))
end

您可能希望适当关注:include中的任何传入:methodoptions设置。所以你可能想要使用block form of merge

EXTRAS = { :include => [:product], :methods => [:price] }
def as_json(options = { })
    super(options.merge(EXTRAS) { |k,ov,nv| ov.is_a?(Array) ? ov + nv : nv }
end