私はRuby on Railsので初心者だにヒットを数えるんRoRのは、:どのように私は、特定のリンク
私は、データベース内の特定のリンク、店舗数のヒットをカウントすると、それだけで数えるよ場合、それは素晴らしいことだろうユニークなリンク。
宝石などはありますか?
私はRuby on Railsので初心者だにヒットを数えるんRoRのは、:どのように私は、特定のリンク
私は、データベース内の特定のリンク、店舗数のヒットをカウントすると、それだけで数えるよ場合、それは素晴らしいことだろうユニークなリンク。
宝石などはありますか?
はあなたの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
モデルを作成することを確認してください。
'増分!'実際に原子ではありません。生成されたSQLをチェックしてください。selectに続いて更新が行われます。 ActiveRecord静的メソッド 'increment_counter'が必要です。 –
あなたは正しいです。私は自分の答えを更新しました。 – iblue
重複したURLレコード(一意制約がない場合)またはActiveRecord :: RecordNotUnique例外がある場合、これはまだ脆弱です。これは解決するのが難しい問題です。 :-(同様の質問をする私の試み:http://stackoverflow.com/questions/14387022/atomic-insert-or-increment-in-activerecord-rails –
Googleアナリティクスと呼ばれるユニークビジターをチェックするための優れたツールがあります:http://code.google.com/apis/analytics/docs/gdata/home.html – alfasin
ヒットを出力したいdb、それはちょっとダウンロードカウンタですが、別のものです。 –