2

ランダムなイベントを返すために、モデルに次の基本的なコードがあります。

def self.random
  Event.first(:offset => rand(Event.count))
end

N個のイベントを返すように関数を変更したいと思います。

firstパラメータとして数値を使用できることは承知していますEvent.first(2)が、ランダムなオフセットと組み合わせるにはどうすればよいですか?

つまり、このようなもの

def self.random(n = 1)
  Event.first(n) # and offset??!!
end

どんな助けでも大歓迎です!

4

2 に答える 2

2

Stuarts メソッドはそれ自体で完全に機能しますが、他の多くの ActiveRecord スコープとチェーンすることはできません。チェーンで機能する他の方法(オフセットを使用)を見つけました:

  def self.random(number = 1)
    Event.offset(rand(Event.count - number+1)).first(number)
  end
于 2013-04-16T06:53:41.667 に答える