Class: Onoma::Variety

Inherits:
Record::Base show all
Defined in:
lib/onoma/models/variety.rb

Constant Summary collapse

TOPLEVEL_VARIETIES =
%w[bioproduct immatter matter product product_group].freeze

Class Method Summary collapse

Methods inherited from Record::Base

method_missing, respond_to?

Class Method Details

.ancestors(variety) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/onoma/models/variety.rb', line 22

def ancestors(variety)
  if variety.parent.nil? || TOPLEVEL_VARIETIES.include?(variety.parent.name)
    []
  else
    [variety.parent, *ancestors(variety.parent)]
  end
end

.parent_variety(variety) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/onoma/models/variety.rb', line 6

def parent_variety(variety)
  v = find(variety)

  if v.nil?
    nil
  elsif (toplevel = toplevel_parent(v)).present?
    toplevel.name
  else
    v.name
  end
end

.toplevel_parent(variety) ⇒ Object



18
19
20
# File 'lib/onoma/models/variety.rb', line 18

def toplevel_parent(variety)
  ancestors(variety).last
end