Module: RailsExtend::ActiveRecord::Taxon

Defined in:
lib/rails_extend/active_record/taxon.rb

Instance Method Summary collapse

Instance Method Details

#has_taxons(*columns) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/rails_extend/active_record/taxon.rb', line 6

def has_taxons(*columns)
  columns.each do |column|
    attribute "#{column}_ancestors", :taxon, outer: column
    class_eval "      before_validation :sync_\#{column}_id, if: -> { \#{column}_ancestors_changed? }\n  \n      def sync_\#{column}_id\n        _outer_id = Hash(\#{column}_ancestors).values.compact.last\n        if _outer_id\n          self.\#{column}_id = _outer_id\n        else\n          self.\#{column}_id = nil\n        end\n      end\n    RUBY_EVAL\n  end\nend\n", __FILE__, __LINE__ + 1