Tracking Views in Rails
May 22nd, 2007
ActsAsViewable is plugin that allows you to track page and asset views in your Rails application. For example, you can use it to track how many times a page is visited or how many times a particular image is viewed.
Trac: http://trac.intridea.com/trac/public/wiki/ActsAsViewable
Subversion repository: http://svn.intridea.com/svn/public/acts_as_viewable
Installation:script/plugin install http://svn.intridea.com/svn/public/acts_as_viewable
OR
cd vendor/plugins
svn co http://svn.intridea.com/svn/public/acts_as_viewable
Create the tables where views will be tracked:
class CreateViewings < ActiveRecord::Migration
def self.up
create_table :viewings do |t|
t.column :viewable_type, :string
t.column :viewable_id, :integer
t.column :views, :integer, :default => 0
t.column :created_at, :datetime, :null => false
t.column :updated_at, :datetime
end
end
def self.down
drop_table :viewings
end
end
Set the objects you want to track views for:
class SomeAsset < ActiveRecord::Base
acts_as_viewable
end
Now you can increment views for these objects wherever you need to. For example in the show action of our SomeAssetController:
class SomeAssetController < ApplicationController
def show
@some_asset = SomeAsset.find(params[:id])
@some_asset.increment_views
end
end
To get the number of views:
@some_asset.views