Sha256: 4c200aaf5584d249f9dd8a5e2dccb1dbaecd997dcdc57f842145fb317c9eee32
Contents?: true
Size: 1.57 KB
Versions: 48
Compression:
Stored size: 1.57 KB
Contents
require 'mongoid' class TaxonomyTerm include Mongoid::Document include Mongoid::Timestamps field :label, type: String field :term_id, type: String field :term_type, :type => Hash, :default => {} key :term_id # index "term_type.FUND_CODE", sparse: true has_and_belongs_to_many :child_terms, :class_name => 'TaxonomyTerm', :inverse_of => :parent_term belongs_to :parent_term, :class_name => 'TaxonomyTerm', :inverse_of => :child_terms #validations validates_presence_of :term_id, :label validates_uniqueness_of :term_id scope :term_id_is, ->(term_id) { where(:term_id => term_id) } scope :parent_term_in, ->(parent_term_id) { where(:parent_term.in => parent_term_id)} scope :label_is, ->(label) {where(:label => label)} scope :fund_code_is, ->(fund_code) { where(:'term_type.FUND_CODE' => fund_code.gsub(/^0*/, ""))} def self.purge! TaxonomyTerm.destroy_all end def self.label_for_term(term_id) where(term_id: term_id).try(:first).try(:label) if term_id end def self.find_term_by_id(term_id) self.term_id_is(term_id).try(:first) end def fund_code term_type['FUND_CODE'] end def ancestor?(term) if(parent_term) (parent_term == term) or parent_term.ancestor?(term) else false end end def descendant?(term) # accept either an ID string or a term term_id = term.is_a?(String) ? term : term.try(:term_id) # loop thru child terms and look for the id child_term_ids.index(term_id) or child_terms.detect {|c| c.descendant? term_id } end end
Version data entries
48 entries across 48 versions & 1 rubygems