Module: Sumaki::Model::Fields::ClassMethods

Defined in:
lib/sumaki/model/fields.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#_sumaki_attribute_reflectionsObject



110
111
112
# File 'lib/sumaki/model/fields.rb', line 110

def _sumaki_attribute_reflections
  @_sumaki_attribute_reflections ||= {}
end

#attribute_namesObject



106
107
108
# File 'lib/sumaki/model/fields.rb', line 106

def attribute_names
  _sumaki_attribute_reflections.keys
end

#field(name, type = nil) ⇒ Object

Access to the field.

class Anime
  include Sumaki::Model
  field :title
  field :url
end

anime = Anime.new({ title: 'The Vampire Dies in No Time', url: 'https://sugushinu-anime.jp/' })
anime.title #=> 'The Vampire Dies in No Time'
anime.url #=> 'https://sugushinu-anime.jp/'

The Field value cam be set.

anime = Anime.new({})
anime.title = 'The Vampire Dies in No Time'
anime.title #=> 'The Vampire Dies in No Time'

Type casting

When a type is specified, it will be typecast.

class Character
  include Sumaki::Model

  field :age, :int
end

character = Character.new({ age: '208' })
character.age #=> 208

Types are:

  • :int

  • :float

  • :string

  • :bool

  • :date

  • :datetime



101
102
103
104
# File 'lib/sumaki/model/fields.rb', line 101

def field(name, type = nil)
  reflection = Reflection.new(name, type)
  AccessorAdder.add(_sumaki_methods_module, _sumaki_attribute_reflections, reflection)
end