0

データベースで最も動きの速い 3 つのイベントを選択する必要があります。(game_start - game_current) を減算することで最速の移動を取得し、その絶対値を取得します。

これが私がやろうとしていることです。明らかに正しい構文ではありませんが、私が何をしようとしているのかを理解するためだけに.

@fast_moving = Event.where("(ABS(game_start - game_current)) > ?", 3)[0..2]

ありがとう!

4

1 に答える 1

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(スコープに引数を渡すことができます)

于 2013-06-03T13:56:34.863 に答える