2012-02-07 6 views
0

私はRuby on Railsので初心者だにヒットを数えるんRoRのは、:どのように私は、特定のリンク

私は、データベース内の特定のリンク、店舗数のヒットをカウントすると、それだけで数えるよ場合、それは素晴らしいことだろうユニークなリンク。

宝石などはありますか?

+2

Googleアナリティクスと呼ばれるユニークビジターをチェックするための優れたツールがあります:http://code.google.com/apis/analytics/docs/gdata/home.html – alfasin

+0

ヒットを出力したいdb、それはちょっとダウンロードカウンタですが、別のものです。 –

答えて

2

はあなたのApplicationControllerに(app/controllers/application_controller.rb)にこれを追加します。

before_filter :count_hits 
def count_hits 
    # This tries to find a existing PageHit by the given url. If it does 
    # not find one, it creates one. 
    @hit = PageHit.find_or_create_by_url(request.url) 

    # Issues an UPDATE page_hits WHERE id = 123 SET count = count + 1 
    # on the underlying database layer. This atomically increments, so 
    # you do not run into race conditions. 
    PageHit.increment_counter(:count, @hit.id) 
end 

を使用すると、URL文字列とカウント整数を含む、PageHitモデルを作成することを確認してください。

+0

'増分​​!'実際に原子ではありません。生成されたSQLをチェックしてください。selectに続いて更新が行われます。 ActiveRecord静的メソッド 'increment_counter'が必要です。 –

+0

あなたは正しいです。私は自分の答えを更新しました。 – iblue

+0

重複したURLレコード(一意制約がない場合)またはActiveRecord :: RecordNotUnique例外がある場合、これはまだ脆弱です。これは解決するのが難しい問題です。 :-(同様の質問をする私の試み:http://stackoverflow.com/questions/14387022/atomic-insert-or-increment-in-activerecord-rails –

関連する問題