我需要在数据库中选择3个移动最快的事件。我通过减去(game_start - game_current)得到最快的移动并取其绝对值。
这是我想要做的。显然不是正确的语法,只是为了让你了解我想要做的事情。
@fast_moving = Event.where("(ABS(game_start - game_current)) > ?", 3)[0..2]
谢谢!
答案 0 :(得分:1)
你几乎就在那里!
Event.where("(ABS(game_start) - ABS(game_current)) > ?", 3).limit(3)
.limit(3)
将结果限制为仅在db级别上的3个结果。
你可以制作一个范围:
class Event < ActiveRecord::Base
scope :moving_fast, lambda { |duration|
where("(ABS(game_start) - ABS(game_current)) > ?", duration || 3) }
并像这样使用它:
@fast_events = Event.moving_fast.limit(3)
# or
@fast_events = Event.moving_fast(5)
(您可以将duration
参数传递给范围)