2016-07-21 7 views
1

私はPostモデルを持っています。私は最終的にはpost_controllerを通して投稿が訪問された回数をカウントする方法を実装したいと思いますビュー数で注文の投稿を表示します。これまでのところ私はPostモデルによって「ビュー数」列を追加するには、移行を作成しました:レールでコントローラーに「ページカウンター」を作成する方法

class AddViewcountToPosts < ActiveRecord::Migration 
    def change 
    add_column :posts, :view_count, :integer 
    end 
end 

私は基本的にVIEW_COUNTカラムにshowアクションをするたびに1を追加しPostsControllerのショーの方法で何かをしたいですアクセスされます。

任意の助けをいただければ幸いです:)

+1

を達成します。あなたは言葉をコードで表現するだけです。 :)あなたはデータベース/モデルにあまり自信がないようです。この場合、(再)レールのチュートリアルを読むことが役に立ちます。 –

答えて

2

あなたは自分のshowアクションでこのカウンタを増やすことができます。ここ

def show 
    # ... 
    @post.increment!(:view_count) 
end 

ません魔法:)

+0

がこれに追加された場合、マイグレーションにデフォルト値 '0'を追加します: 'add_column:posts、:view_count、:integer、default:0' – oreoluwa

+2

http://apidock.com/rails/ActiveRecord/Persistence/ increment nilの場合は属性をゼロに初期化し、byとして渡された値を追加します(デフォルトは1)。 –

+0

すごく、それはとてもシンプルだろうと気づいていない!私は間違った言葉を使用していたと推測するので、似たようなソリューションのためにGoogleを検索するとき何も見つかりませんでした:) – Rixcy

0

使用レールincrementあなたはすぐそこ問題の解決策の70%を持っているこの

class PostsController < ApplicationController 
    before_filter :find_post, only: [:show] 
    before_filter :increment_view_count, only: [:show] 

    def show 
    # ... 
    end 

    private 

    def find_post 
    @post = Post.find(params[:id]) 
    end 

    def increment_view_count 
    @post.increment(:view_count) 
    end 
end 
関連する問題