2011-09-19 10 views
0

ユーザーはURLを送信できるアプリケーションを構築しています。特定のURLのうちどれだけがサイトに投稿されたのかを調べて、彼らが提出された回数で注文されたリストで。Railsの繰り返しエントリ数で並べ替え

アイデア? Rails 3.0.6を使用しています

答えて

0

あなたは重複するURLを許可し、あなたはURLとユーザーの間でユニークなURLと結合表を持っている場合はどうあるべきかである(あなたがurl

Url.group(:url).select("urls.*,count(*) as num").order("num desc") 

Urlクラスを持っていると仮定している場合):

Url.joins(:users).group("urls.id").select("urls.*, count(*) as num").order("num desc") 
+0

ありがとうございます - 少し異なる構文を使用しましたが、結果は正常です。 – wastedhours

+0

このソリューションはPostgreSQL(または厳密なSQLを持つデータベース)では動作しません。生成されたSQLのselect句には、group_by句または集合関数にない値が含まれます。 – dkam

+0

@dkam - あなたはそれを試しましたか? – klochner

0

私がよく理解していれば、フォームを介してユーザから提出されたすべてのリンクを追跡したいと思います。

"url"(インデックスと単調性制約付き)と "count"(インデックス付き)という2つの列を持つsubmitted_urlsテーブルを使用できます。

新しいリンクを送信するときは、コントローラにそのURLがテーブルに存在するかどうかを確認させてください。それ以外の場合は作成し、そうでなければこのURLに関連付けられたカウンタをインクリメントします。

あなたのリンクを一覧表示するのは、このテーブルに注文( 'count DESC')句を指定するだけで簡単になり、リンクの総数を数えることはcount()の問題です。

私がよく理解できなかった場合は、サイトの分析ダッシュボードを実装する必要があることを意味します。なぜgoogle analyticsを使用しないのですか?