Method: Archimate::DataModel::Comparison::ClassMethods#model_attr

Defined in:
lib/archimate/data_model/comparison.rb

#model_attr(attr_sym, comparison_attr: nil, writable: false) ⇒ Object

Define the reader method (or call model_attr) Append the attr_sym to the @@attrs for the class



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/archimate/data_model/comparison.rb', line 60

def model_attr(attr_sym, comparison_attr: nil, writable: false)
  send(:attr_reader, attr_sym)
  attrs = attr_names << attr_sym
  class_variable_set(:@@attr_names, attrs.uniq)

  if comparison_attr != :no_compare
    attrs = comparison_attr_paths << (comparison_attr ? [attr_sym, comparison_attr] : attr_sym)
    class_variable_set(:@@comparison_attr_paths, attrs.uniq)
  end
  if writable
    define_method("#{attr_sym}=".to_sym) do |val|
      instance_variable_set(:@hash_key, nil)
      instance_variable_set("@#{attr_sym}".to_sym, val)
    end
  end
end