ActsAsKing
Rails gem to provide self referencing hierarchy for ActiveRecord models.
Installation
gem install acts_as_king
More preferrably in your Gemfile
gem 'acts_as_king'
Usage
The target for ActsAsKing is to be an easy to use, self explanitory gem.
Create a migration to add parent_id to your model:
rails g migration AddParentIdToComments
Add a column to your comments table
class AddParentIdToComments < ActiveRecord::Migration
def self.up
add_column :comments, :parent_id, :integer
add_index :comments, :parent_id
end
end
In your model:
class Comment < ActiveRecord::Base
acts_as_king
end
Create a couple of comments
comment_1 = Comment.create # id: 1
comment_2 = Comment.create(:parent => comment_1) # id: 2
Get all top level comments
comments = Comment.kings
=> [#<Comment id: 1, parent_id: nil>]
Get the first top level comment and display the immediate children
comment = Comment.kings.first
comment.children
=> [#<Comment id: 2, parent_id: 1>]
Contributing
Contributing is easy. Fork the repository. Hack away. Create tests. Send a pull request.