class Sphene::Attribute
Attributes
default[R]
model[R]
name[R]
type[R]
Public Class Methods
new(name, model, type: Types::Default, default: nil)
click to toggle source
# File lib/sphene/attribute.rb, line 7 def initialize(name, model, type: Types::Default, default: nil) @name = name @model = model @type = type @default = default end
Public Instance Methods
value()
click to toggle source
# File lib/sphene/attribute.rb, line 14 def value return default_value unless ivar_defined?(:@value_before_cast) return @value if ivar_defined?(:@value) @value = type.cast(@value_before_cast) end
value=(value)
click to toggle source
# File lib/sphene/attribute.rb, line 20 def value=(value) remove_ivar(:@value) if ivar_defined?(:@value) @value_before_cast = value end
Private Instance Methods
default_value()
click to toggle source
# File lib/sphene/attribute.rb, line 27 def default_value return default unless default.respond_to?(:call) model.instance_exec(&default) end
ivar_defined?(name)
click to toggle source
# File lib/sphene/attribute.rb, line 32 def ivar_defined?(name) instance_variable_defined?(name) end
remove_ivar(name)
click to toggle source
# File lib/sphene/attribute.rb, line 36 def remove_ivar(name) remove_instance_variable(name) end