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.



15
16
17
18
# File 'lib/declare_schema/field_declaration_dsl.rb', line 15

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) ⇒ Object



36
37
38
# File 'lib/declare_schema/field_declaration_dsl.rb', line 36

def method_missing(name, *args)
  field(name, args.first, *args[1..-1])
end

Instance Attribute Details

#modelObject (readonly)

Returns the value of attribute model.



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

def model
  @model
end

Instance Method Details

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



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

def field(name, type, *args)
  options = args.extract_options!
  @model.declare_field(name, type, *(args + [@options.merge(options)]))
end

#optimistic_lockObject



27
28
29
# File 'lib/declare_schema/field_declaration_dsl.rb', line 27

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

#timestampsObject



22
23
24
25
# File 'lib/declare_schema/field_declaration_dsl.rb', line 22

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