有没有办法查询只是 ActiveRecord :: Relation中的记录,而不将其转换为数组?
在limit
ed关系上链接范围会产生奇怪的结果:
class Game < ActiveRecord::Base
scope :recent, ->(number) { order('created_at DESC').limit(number) }
scope :won_by, ->(player) { where(won_by: player) }
end
recent_games = Game.recent(10)
recent_games.won_by(player_one).size # 10
recent_games.won_by(player_two).size # 10
阻止limit
影响后续查询的最佳方法是什么?
答案 0 :(得分:0)
您可以使用first(N)
代替limit
#my bad
<强>更新强>
抱歉答案,我以为我记得自己使用first
链接范围,无论如何,限制确实有点过山车。规则是限制方法应始终链接到最后!我认为在这里使用范围recent
时最好使用实例方法。
答案 1 :(得分:0)
目前的解决方案是使用where
限制查询(并使用unscope
摆脱不必要的限制):
recent_games = Game.recent(10)
recent_games = recent_games.where(id: recent_games).unscope(:limit)
但我想知道是否有更好的解决方案?