Module: Data2ruby::ClassMethods

Defined in:
lib/data2ruby.rb

Instance Method Summary collapse

Instance Method Details

#associationsObject



9
10
11
# File 'lib/data2ruby.rb', line 9

def associations
  @_associations ||= []
end

#has_many(label, &block) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/data2ruby.rb', line 25

def has_many(label, &block)
  attr_writer(label)
  associations << label
  klass = build_assoc_class(&block)
  assoc_instance_builder = build_assoc_instance_builder(klass)
  inst_var_memo = "@_has_many_#{label}"

  define_method(label) do
    memoize(inst_var_memo) do
      data[label].map do |item|
        assoc_instance_builder.(item)
      end
    end
  end
end

#has_one(label, &block) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/data2ruby.rb', line 13

def has_one(label, &block)
  attr_writer(label)
  associations << label
  klass = build_assoc_class(&block)
  assoc_instance_builder = build_assoc_instance_builder(klass)
  inst_var_memo = "@_has_one_#{label}"

  define_method(label) do
    memoize(inst_var_memo) { assoc_instance_builder.(data[label]) }
  end
end