Module: Zena::Use::Relations::ClassMethods

Included in:
VirtualClass
Defined in:
lib/zena/use/relations.rb

Instance Method Summary collapse

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_kpathObject

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