2017-06-17 1 views
0

によって私は私は2つのテーブルを追加し、Railsの連合表とソート共通鍵

events = (Match + Round).order('created_at desc').paginate(:page => params[:page], :per_page => params[:per_page]) 
のようなのcreated_at何かに基づいてレコードをソートしたい従っ

Match(id, team1, team2, series_id, event_time, event_lock_time, match_type, created_at, updated_at, match_no, match_stage) 

Round(id, series_id, name, description, event_time, event_lock_time, team_ids, matches_count, created_at, updated_at) 

としてRailsアプリケーションマッチとラウンド中に二つのモデルを持っています

と同様に改ページを適用します。私はぺージネームの宝石を使用しています。

アクティブレコードでこれを行う方法を教えてもらえますか。

+0

あなたのモデルを共有することはできますか?彼らの間に関連があれば? –

+0

いいえ私はマッチとラウンドモデルの間に関連がありません –

答えて

0

私が知る限り、モデルには+演算子がありません。だから、それはできません。

(Match + Round)

をしかし、あなたはActive Recordの関係を追加することができます。

matches = Match.all 
rounds = Round.all 
(matches + rounds).sort_by(&:created_at) 

あなたは(matches + rounds)は配列ではなくアクティブレコードであるため、sort_byまたは類似の方法を使用する必要があります関係(だからorderは定義されていません)。

更新: will_paginateを使用して結果を改ページしているようです。それはまだ、アレイで動作しますが、あなたはそれを伝えるために持っていて、二つの方法でそれを伝えることができます。require 'will_paginate/array'

  • 初期化子を作成設定/初期化子/ will_paginate_with_array.rb:

    1. は、コントローラの先頭にこれを追加しますであり、このファイルの内側に必要です。
    2. その後

    、あなたが行うことができます:

    (matches + rounds).sort_by(&:created_at).paginate(:page => params[:page], , :per_page => params[:per_page]) 
    
  • +0

    お返事ありがとうございますが、私はAPIリクエストを介してデータを提供しなければならないので結果を改ページしたいと思います。 –

    +0

    ああ、私は私の答えを更新します... –

    関連する問題