データベースで最も動きの速い 3 つのイベントを選択する必要があります。(game_start - game_current) を減算することで最速の移動を取得し、その絶対値を取得します。
これが私がやろうとしていることです。明らかに正しい構文ではありませんが、私が何をしようとしているのかを理解するためだけに.
@fast_moving = Event.where("(ABS(game_start - game_current)) > ?", 3)[0..2]
ありがとう!
データベースで最も動きの速い 3 つのイベントを選択する必要があります。(game_start - game_current) を減算することで最速の移動を取得し、その絶対値を取得します。
これが私がやろうとしていることです。明らかに正しい構文ではありませんが、私が何をしようとしているのかを理解するためだけに.
@fast_moving = Event.where("(ABS(game_start - game_current)) > ?", 3)[0..2]
ありがとう!
あなたはほとんどそこにいます!
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
(スコープに引数を渡すことができます)