Module: Zena::Use::Relations::ClassMethods
- Included in:
- VirtualClass
- Defined in:
- lib/zena/use/relations.rb
Instance Method Summary collapse
-
#all_relations(start = nil, group_filter = nil) ⇒ Object
All relations related to the current class/virtual_class with its ancestors.
-
#split_kpath ⇒ Object
Class path hierarchy.
Instance Method Details
#all_relations(start = nil, group_filter = nil) ⇒ Object
All relations related to the current class/virtual_class with its ancestors.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/zena/use/relations.rb', line 42 def all_relations(start=nil, group_filter=nil) if group_filter group_filter = "#{group_filter}%" rel_as_source = RelationProxy.find(:all, :conditions => ["site_id = ? AND source_kpath IN (?) AND rel_group LIKE ?", current_site[:id], split_kpath, group_filter]) rel_as_target = RelationProxy.find(:all, :conditions => ["site_id = ? AND target_kpath IN (?) AND rel_group LIKE ?", current_site[:id], split_kpath, group_filter]) else rel_as_source = RelationProxy.find(:all, :conditions => ["site_id = ? AND source_kpath IN (?)", current_site[:id], split_kpath]) rel_as_target = RelationProxy.find(:all, :conditions => ["site_id = ? AND target_kpath IN (?)", current_site[:id], split_kpath]) end rel_as_source.each {|rel| rel.source = start } rel_as_target.each {|rel| rel.target = start } (rel_as_source + rel_as_target).sort {|a,b| a.other_role <=> b.other_role} end |
#split_kpath ⇒ Object
Class path hierarchy. Example for (Post) : N, NN, NNP
61 62 63 |
# File 'lib/zena/use/relations.rb', line 61 def split_kpath @split_kpath ||= VirtualClass.split_kpath(kpath) end |