Module: Carpenter::Model::Modules::Fields::ClassMethods

Defined in:
lib/carpenter/model/modules/fields.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



19
20
21
# File 'lib/carpenter/model/modules/fields.rb', line 19

def self.extended(base)
  base.instance_variable_set(:@carpenter__model__fields, Carpenter::Model::AttributesContainer.new)
end

Instance Method Details

#carpenter__model__create_field(name, type, **options) ⇒ Object



36
37
38
# File 'lib/carpenter/model/modules/fields.rb', line 36

def carpenter__model__create_field(name, type, **options)
  @carpenter__model__fields << Carpenter::Model::FieldDefinition.new(name, type, **options)
end

#carpenter__model__define_field_getter(name) ⇒ Object



40
41
42
# File 'lib/carpenter/model/modules/fields.rb', line 40

def carpenter__model__define_field_getter(name)
  define_method(name) { @carpenter__model__fields[name] }
end

#carpenter__model__define_field_setter(name) ⇒ Object



44
45
46
# File 'lib/carpenter/model/modules/fields.rb', line 44

def carpenter__model__define_field_setter(name)
  define_method("#{name}=") { |value| @carpenter__model__fields[name].set(value) }
end

#field(name, type = :string, **options) ⇒ Object



30
31
32
33
34
# File 'lib/carpenter/model/modules/fields.rb', line 30

def field(name, type = :string, **options)
  carpenter__model__create_field(name, type, **options)
  carpenter__model__define_field_getter(name)
  carpenter__model__define_field_setter(name)
end

#fieldsObject



23
# File 'lib/carpenter/model/modules/fields.rb', line 23

def fields = @carpenter__model__fields.values

#inherited(klass) ⇒ Object



25
26
27
28
# File 'lib/carpenter/model/modules/fields.rb', line 25

def inherited(klass)
  klass.instance_variable_set(:@carpenter__model__fields, @carpenter__model__fields.dup)
  super
end