Skip to content
The ActiveRecord acts_as_commentable plugin
Branch: master
Clone or download
Latest commit 9a728d9 Jan 31, 2015


Acts As Commentable

Provides a single Comment model that can be attached to any model(s) within your app. It creates a Comment model and handles the plumbing between that model and any models that you declare to be commentable models.

Installation :

Add the following line to your Gemfile

Rails 4

gem 'acts_as_commentable'

Rails 3

gem 'acts_as_commentable', '3.0.1'

Rails 2

gem 'acts_as_commentable', git: '', branch: '2.x'


Rails 3+

rails g comment

Rails 2

script/generate comment

Then migrate your database to add the comments model:

rake db:migrate


Make the desired ActiveRecord model act as commentable:

class Post < ActiveRecord::Base

Add a comment to a model instance by adding the following to the controller:

commentable = Post.create
comment = commentable.comments.create
comment.title = "First comment."
comment.comment = "This is the first comment."

Fetch comments for the commentable model by adding the following to the view:

commentable = Post.find(1)
comments = commentable.comments.recent.limit(10).all

You can also add different types of comments to a model:

class Todo < ActiveRecord::Base
  acts_as_commentable :public, :private

Note: This feature is only available from version 4.0 and above

To fetch the different types of comments for this model:

public_comments = Todo.find(1).public_comments
private_comments = Todo.find(1).private_comments

By default, `acts_as_commentable` will assume you are using a `Comment` model. To change this, or change any other join options, pass in an options hash:

class Todo < ActiveRecord::Base
  acts_as_commentable class_name: 'MyComment'

This also works in conjunction with comment types:

class Todo < ActiveRecord::Base
  acts_as_commentable :public, :private, { class_name: 'MyComment' }


Xelipe - This plugin is heavily influenced by Acts As Taggable.


Jack Dempsey, Chris Eppstein, Jim Ray, Matthew Van Horn, Ole Riesenberg, ZhangJinzhu, maddox, monocle, mrzor, Michael Bensoussan


You can’t perform that action at this time.