class Structural::Model::Field
Attributes
model[R]
name[R]
options[R]
Public Class Methods
new(model, name, options)
click to toggle source
# File lib/structural/model/field.rb, line 4 def initialize(model, name, options) @model = model @name = name @options = options end
Public Instance Methods
cast(value)
click to toggle source
# File lib/structural/model/field.rb, line 28 def cast(value) TypeCasts.cast(options.fetch(:type, value.class), value) end
default()
click to toggle source
# File lib/structural/model/field.rb, line 54 def default options.fetch(:default) end
default?()
click to toggle source
# File lib/structural/model/field.rb, line 50 def default? options.has_key?(:default) end
default_value()
click to toggle source
# File lib/structural/model/field.rb, line 40 def default_value @default_value ||= proc do if default? default else raise MissingAttributeError, key end end end
define()
click to toggle source
# File lib/structural/model/field.rb, line 10 def define Definer.method_memoize(model, name, ivar_name) { |data| value_of(data) } Definer.method(model, "#{name}?") { |obj| presence_of(obj.data) } hook_define end
hook_define()
click to toggle source
# File lib/structural/model/field.rb, line 16 def hook_define end
ivar_name()
click to toggle source
# File lib/structural/model/field.rb, line 36 def ivar_name @ivar_name ||= "@#{@name}" end
key()
click to toggle source
# File lib/structural/model/field.rb, line 32 def key options.fetch(:key, name).to_sym end
presence_of(data)
click to toggle source
# File lib/structural/model/field.rb, line 24 def presence_of(data) data.has_key?(key) && !data.fetch(key).nil? end
value_of(data)
click to toggle source
# File lib/structural/model/field.rb, line 19 def value_of(data) value = data.fetch(key, &default_value) cast(value) end