Ancestree
Ancestree is a simple Rails 3 plugin that makes it easy to automatically inherit attributes from a parent object.
Ancestree makes a few assumptions about the objects that will be inheriting attributes – namely, objects should be in a tree-like structure, with each object responding to ‘#parent’ up the tree, with the top-level objects returning nil for parent.
Example
Let’s assume you have a Node model in your Rails app and that Node objects each have a parent. You want Nodes to be “disabled” if it or any of its parents are disabled:
class Node < ActiveRecord::Base
include InheritAncestorAttributes
belongs_to :parent, :class_name => 'Node'
inherit_ancestor_attributes :disabled?
end
Copyright © 2010 Brian Rose, released under the MIT license