> Player.joins(:game).order('games.scheduled_start ASC').last(5).sum(:ppg)
=> NoMethodError: undefined method `+' for #<GamePlayer:0x007ff543cd05d8>
> Player.joins(:game).order('games.scheduled_start ASC').sum(:ppg)
=> #<BigDecimal:7ff543cebc20,'0.30115E3',18(18)>
所以,我不明白爲什麼.last(n)
是打破我打電話.average
和.sum
在這個集合的能力。紅寶石平均和去年(N)
編輯
[19] pry(main)> GamePlayer.order('id desc').limit(10).map{|x| x.ppg.to_f}
GamePlayer Load (0.6ms) SELECT "game_players".* FROM "game_players" ORDER BY id desc LIMIT 10
=> [14.0, 0.75, 1.2, 0.0, 2.55, 1.19, 2.04, 2.0, 0.0, 24.68]
[20] pry(main)> GamePlayer.order('id desc').limit(10).average(:ppg).to_f
(74.4ms) SELECT AVG("game_players"."ppg") AS avg_id FROM "game_players" LIMIT 10
=> 8.943831900603671
[21] pry(main)> GamePlayer.order('id desc').limit(50).average(:ppg).to_f
(73.4ms) SELECT AVG("game_players"."ppg") AS avg_id FROM "game_players" LIMIT 50
=> 8.943831900603671
[22] pry(main)> GamePlayer.order('id desc').limit(50).map{|x| x.ppg.to_f}.sum/50
GamePlayer Load (0.9ms) SELECT "game_players".* FROM "game_players" ORDER BY id desc LIMIT 50
=> 3.649800000000001
任何人都有一個想法是什麼這種差異是什麼?
我不認爲你可以使用'limit'和'sum'這種方式 – Stefan
如果我沒有弄錯,'SUM'返回一行,'LIMIT'沒有任何作用。 – Stefan
它工作得很好......一旦我有一個關係對象,調用'平均(:ppg)'工作得很好。 – Dudo