Module: Carpenter::Model::Modules::Fields::ClassMethods
- Defined in:
- lib/carpenter/model/modules/fields.rb
Class Method Summary collapse
Instance Method Summary collapse
- #carpenter__model__create_field(name, type, **options) ⇒ Object
- #carpenter__model__define_field_getter(name) ⇒ Object
- #carpenter__model__define_field_setter(name) ⇒ Object
- #field(name, type = :string, **options) ⇒ Object
- #fields ⇒ Object
- #inherited(klass) ⇒ Object
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, **) @carpenter__model__fields << Carpenter::Model::FieldDefinition.new(name, type, **) 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, **) carpenter__model__create_field(name, type, **) carpenter__model__define_field_getter(name) carpenter__model__define_field_setter(name) end |
#fields ⇒ Object
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 |