Как получить атрибуцию в атрибуте to_json - PullRequest
0 голосов
/ 21 августа 2011

Я использую 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 голосов
/ 21 августа 2011

Вы можете использовать :methods:

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

Возможно, вы захотите уделить должное внимание любым входящим настройкам :include и :method в вашем options. Поэтому вы можете использовать блочную форму 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...