Acts As Commentable
Allows for threaded comments to be added to multiple and different models. Drop-in compatible for acts_as_commentable (however requiring a database schema change)
Resources
Install
Rails
* To install as a plugin:
script/plugin install http://github.com/jackdempsey/acts_as_commentable
Merb/Rails
* To install as a gem:
rake install
* Create a new rails migration and add the following self.up and self.down methods
def self.up
create_table "comments", :force => true do |t|
t.integer "commentable_id", :default => 0
t.string "commentable_type", :limit => 15, :default => ""
t.string "title", :default => ""
t.text "body", :default => ""
t.string "subject", :default => ""
t.integer "user_id", :default => 0, :null => false
t.integer "parent_id"
t.integer "lft"
t.integer "rgt"
t.timestamps
end
add_index "comments", "user_id"
add_index "comments", "commentable_id"
end
def self.down
drop_table :comments
end
Usage
class Model < ActiveRecord::Base
acts_as_commentable_with_threading
end
* Add a comment to a model instance
model = Model.new
comment = Comment.new(:model => model, :body => "Your comment text here")
comment.save!
comment.move_to_child_of(the_desired_parent_comment)
# Following doesn't work/make sense to me. Leaving for historical sake -- Jack
# * Each comment reference commentable object
#
# model = Model.find(1)
# model.comments.get(0).commentable == model
Credits
Jack Dempsey - This plugin/gem is heavily influenced/liberally borrowed/stole from acts_as_commentable
which in turn credits.…
Xelipe - Because acts_as_commentable was heavily influenced by Acts As Taggable.