0
我想计算包含的所有文件某些领域的嵌入式1-N Mongoid之关系:访问,总结领域
class Trip
include Mongoid::Document
embeds_many :points
field :total_distance, type: Integer, default:->{ calc_total_dist }
def calc_total_dist
points.each.inject(0){|sum, point| sum + point.distance}
end
end
class Point
include Mongoid::Document
embedded_in :trip
field :distance, type: Integer
end
的想法是这样我可以这样做:
p1 = Point.new(:distance=>1000*30)
p2 = Point.new(:distance=>1000*20)
t = Trip.new
t.points << [p1, p2]
t.save
t.total_distance # should be equal to 1000*(30+20)
当total_distance
应该通过default
动作来计算,这是行不通的(在上面的例子中,total_distance
返回0)。
然而,当同样的代码被称为在模型实例,它的工作:
t.points.each.inject(0){|sum, point| sum + point.distance}
t.points.sum(:distance)
在calc_total_dist
方法,它看起来像points
不会访问真正的对象。那么你如何正确引用的这个模型本身的嵌入式文件呢?
谢谢,但我得到了同样的结果。我在这个问题中增加了更多细节来澄清。 –