Sha256: c67231f3c597b899ff1b247ef0872c2921018517db0776e670620f26decd1c36

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

# entity.rb

require 'active_support/concern'

module Taxonomite
  module Entity
    extend ActiveSupport::Concern

    included do
      has_one :taxonomy_node, class_name: 'Taxonomite::Node', as: :owner, validate: true
      before_save :do_setup

      class_eval "def base_class; ::#{self.name}; end"
    end

    def get_taxonomy_node
      if (self.taxonomy_node == nil)
        self.taxonomy_node = self.create_taxonomy_node
      end
      self.taxonomy_node
    end

    protected
      # classes overload to create the appropriate taxonomy_node
      # def create_taxonomy_node
      #   Taxonomite::Node.new(name: self.name)
      # end

    private
      # subclasses should overload create_taxonomy_node to create the appropriate Place object and set it up
      def do_setup
        if (self.taxonomy_node == nil)
          self.taxonomy_node = self.respond_to?(:create_taxonomy_node) ? self.create_taxonomy_node : Taxonomite::Node.new(name: self.name)
          self.taxonomy_node.owner = self
        end
      end

  end # module Location
end # module Places

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
taxonomite-0.2.3 lib/taxonomite/entity.rb
taxonomite-0.1.0 lib/taxonomite/entity.rb