class Content < Item
self.abstract_class = true
- # Dynamic ClassMethods
+ # Dynamic Methods
def self._content?
self.my_manifest.content_model
def self.load_manifest
super
+ # Class Methods
f = self._content?
define_singleton_method("content?") do
f
define_singleton_method("owner_column") do
o
end
+ define_singleton_method("child_models") do |tree_name|
+ self.my_manifest.child_models tree_name
+ end
+ # Instance Methods
+ define_method("parent_model") do |tree_name|
+ self.__send__ self.class.parent_model(tree_name).item_name
+ end
+ define_method("elements") do |tree_name|
+ self.my_manifest.child_element_names(tree_name).map {|element_name|
+ self.__send__ element_name
+ }
+ end
end
- # ClassMethods
+ # Class Methods
def self.operator operators
return nil unless self.owner_type
raise ActiveRecord::Forbidden unless content.own?(operators)
content
end
- #InstanceMethods
+ # Instance Methods
def owner_model
self.class.owner_model ? self.__send__(self.class.owner_model.item_name) : self