Gem that allows use ltree
in ActiveRecord models.
It uses a implementation based around PostgreSQL's ltree data type, associated functions and operators.
Author | Andrei Panamarenka |
Version | 1.1.7 (March 20, 2018) |
License | Released under the MIT license. |
- Ruby 2.*
- Rails >= 4, < 5.3
- Pg adapter (gem 'pg') >= 0.17, < 2
Add this line to your application's Gemfile:
gem 'pg_ltree', '1.1.7'
And then execute:
$ bundle
Add ltree extension to PostgreSQL:
class AddLtreeExtension < ActiveRecord::Migration
def change
enable_extension 'ltree'
end
end
Update your model:
class AnyModel < ActiveRecord::Migration
def change
add_column :any_model, :path, :ltree
add_index :any_model, :path, using: :gist
end
end
Run migrations:
$ bundle exec rake db:migrate
class AnyModel < ActiveRecord::Base
ltree :path
# ltree :path, cascade: false # Disable cascade update and delete
end
root = AnyModel.create!(path: 'Top')
child = AnyModel.create!(path: 'Top.Science')
subchild = AnyModel.create!(path: 'Top.Science.Astronomy')
root.parent # => nil
child.parent # => root
root.children # => [child]
root.children.first.children.first # => subchild
subchild.root # => root
For find a lots of additional information about PgLtee see: