Class: DeclareSchema::FieldDeclarationDsl

Inherits:
BasicObject
Includes:
Kernel
Defined in:
lib/declare_schema/field_declaration_dsl.rb

Overview

avoid Object because that gets extended by lots of gems

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model, **options) ⇒ FieldDeclarationDsl

Returns a new instance of FieldDeclarationDsl.



13
14
15
16
# File 'lib/declare_schema/field_declaration_dsl.rb', line 13

def initialize(model, **options)
  @model = model
  @options = options
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, **options) ⇒ Object



33
34
35
# File 'lib/declare_schema/field_declaration_dsl.rb', line 33

def method_missing(name, *args, **options)
  field(name, *args, **options)
end

Instance Attribute Details

#modelObject (readonly)

Returns the value of attribute model.



18
19
20
# File 'lib/declare_schema/field_declaration_dsl.rb', line 18

def model
  @model
end

Instance Method Details

#field(name, type, *args, **options) ⇒ Object



29
30
31
# File 'lib/declare_schema/field_declaration_dsl.rb', line 29

def field(name, type, *args, **options)
  @model.declare_field(name, type, *args, **@options.merge(options))
end

#optimistic_lockObject



25
26
27
# File 'lib/declare_schema/field_declaration_dsl.rb', line 25

def optimistic_lock
  field(:lock_version, :integer, default: 1, null: false)
end

#timestampsObject



20
21
22
23
# File 'lib/declare_schema/field_declaration_dsl.rb', line 20

def timestamps
  field(:created_at, :datetime, null: true)
  field(:updated_at, :datetime, null: true)
end