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
不會訪問真正的對象。那麼你如何正確引用的這個模型本身的嵌入式文件呢?
謝謝,但我得到了同樣的結果。我在這個問題中增加了更多細節來澄清。 –