2012-05-07 11 views
-1

ページテーブルを2つのテーブルに適用したい。レール内の2つの異なるモデルにページ分割を適用する方法3

メッセージ

Id Message   Created at 
1  Message One  2012-04-23 13:11:23 
2  Message Two  2012-04-23 13:11:26 
3  Message Three 2012-04-23 13:11:27 

入札

Id Comment   Created at 
1  Comment One  2012-04-23 13:11:24 
2  Comment Two  2012-04-23 13:11:25 
3  Comment Three 2012-04-23 13:11:28 

私はwill_paginateと呼ばれるこの素晴らしい宝石があります1つのクエリ

Id Content   Created at 
    3  Comment Three 2012-04-23 13:11:28 
    3  Message Three 2012-04-23 13:11:27 
+1

グーグル:あなたはオプションが殺到している 「Railsのページ区切り」! –

+0

また、多数の重複! http://stackoverflow.com/search?q=pagination+rails –

+0

@Aayush Kumar: - クエリ最適化のようないくつかのパラメータがあります。私はそんな簡単な質問をしていません......もし私が1000のメッセージと1000の入札から最新の2を表示したいのであれば、私は2000レコードを取り出してからページ分割を適用する必要がありますか?.......すべての入札単価を引き上げて、 ......それで...... – Salil

答えて

0

を使用して(二、最新の入札やメッセージ)は、次の結果が欲しいです。私のアプリでそれを使用しています。

watch this railscastをインストールする方法を知る。その非常に簡単で素晴らしい。

ありがとうございました。

0

メッセージと入札用に別々のテーブルが2つ必要な理由を教えてください。私には、どちらもテキスト通知の何らかの形式を保存するように見えます。 Single Table InheritanceまたはPolymorphic Associationを使用しているはずです(将来的には他のビジネスロジックが出てくるでしょう)。

詳しくはthis blogをご覧ください。

ページトップが2つの表にまたがっていることは、設計上の匂いだと私は考えています。私は完全な文脈を持っていないし、今あなたがデザインを変える自由を持っているかどうかは分かりません。しかし、ただの考え!

+0

質問に与えられたものは、私の実際のデータベース構造ではありません。私は多態性を知っています.....しかし、ここでは多態性を使うことはできません – Salil

0

最初のものから、ページ付けレコード複数テーブルはコード臭です。

あなたはこのBADアプローチで移動する場合でも、コードを以下のことはあなたのために役に立つかもしれません:

records = [Message, Comment, Post].inject([]) do |record, with_class| 
    record+with_class.order('created_at DESC')#you can add limit, offset here 
end 


#Now paginate those records 

@records = WillPaginate::Collection.create(current_page, per_page, records.size) do   |pager| 
      pager.replace(@records) 
      end 
関連する問題