日付フィールドを持つイベントがいっぱいの配列があります。私は、日付フィールドで配列をソートしたかったが、これがソートされた後、次に、それぞれの日内のイベントをシャッフル(まだ日付順を維持する):日付で並べ替え、日付内でシャッフルする方法
@events = Event.order('date desc').shuffle....?
これは私が何をしたいの例です。
アレイ:1つの要求に
[
Event 1 (Jan. 2),
Event 2 (Jan. 1),
Event 3 (Jan. 3),
Event 4 (Jan. 1),
Event 5 (Jan. 3)
]
、私はこの順序をしたい:
Event 2, Event 4, Event 1, Event 3, Event 5
しかし、別の要求、異なるランダムな順序で:
Event 4, Event 2, Event 1, Event 5, Event 3
各要求で、私は日付順を維持するが、それぞれの日内のイベントをシャッフル同様のバリエーションが欲しいです。これは、同じ日付内のイベントのランダムな順序を提供します
@events = Event.order("date, random()")
:
シャッフルすると、すぐに注文権が失われますので、 'Event.all.shuffle.sort_by(&:date)'のようなことをしようとしますが、ここにすべてのイベントを照会することに気をつけてください。 –
ありがとう、manuel。これを試してみましたが、ソート/オーダーの前に条件があるため動作しません。他の提案はありますか? – gitastic
あなたの努力の証拠を見ることを期待するとき。それがなければ、コードがあなたのために書かれているように見えるように見えますが、それはSOのためではありません。 –