Skip to content

Instantly share code, notes, and snippets.

View mathie's full-sized avatar

Graeme Mathieson mathie

View GitHub Profile
class NodesController < ActionController::Base
def index
@nodes = Node.roots.eager_load(:descendants)
end
end
<li>
<%= link_to node.name, node %>
<% if node.children.present? %>
<ul>
<%= render node.children %>
</ul>
<% end %>
</li>
<ul>
<%= render @nodes %>
</ul>
class NodesController < ActionController::Base
def index
@nodes = Node.roots
end
end
class Node < ActiveRecord::Base
def descendants
self.class.where(“:id = ANY(path)”, id: id)
end
end
class Node < ActiveRecord::Base
def children
self.class.where(path: path + [id])
end
end
class Node < ActiveRecord::Base
def siblings
self.class.where(path: path)
end
end
class Node < ActiveRecord::Base
def ancestors
if path.present?
self.class.where(id: path)
else
self.class.none
end
end
end
class Node < ActiveRecord::Base
def parent
if parent_id = path.last
self.class.find(parent_id)
else
nil
end
end
end
class Node < ActiveRecord::Base
def root
if root_id = path.first
self.class.find(root_id)
else
self
end
end
end