Ответы следующие:
class Forest < ActiveRecord::Base
has_many :trees
def total_water_usage
trees.sum(:water_usage)
end
def to_xml
attributes["total_water_usage"] = total_water_usage
attributes.to_xml({:root => self.class.element_name})
end
end
class Tree < ActiveRecord::Base
belongs_to :forest
def water_usage
# place your water usage calculation for a tree here
end
end
Пояснение:
Ответ на первую часть вопроса приведен в total_water_usage, который будет вызывать water_usage для каждого дерева и суммировать его.
Часть 2: мы должны переопределить метод to_xml, чтобы включить ключ total_water_usage. Взято из оригинального метода to_xml.