class SimpleEnum::Accessors::Accessor
Attributes
enum[R]
name[R]
source[R]
Public Class Methods
new(name, enum, source = nil, prefix = nil)
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 6 def initialize(name, enum, source = nil, prefix = nil) @name = name.to_s @enum = enum @source = source.to_s.presence || "#{name}#{SimpleEnum.suffix}" @prefix = prefix end
Public Instance Methods
changed?(object)
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 31 def changed?(object) object.send(:attribute_changed?, source) end
prefix()
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 13 def prefix @cached_prefix ||= @prefix && "#{@prefix == true ? name : @prefix}_" || "" end
read(object)
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 17 def read(object) enum.key(read_before_type_cast(object)) end
scope(relation, value)
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 41 def scope(relation, value) relation.where(source => value) end
selected?(object, key = nil)
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 25 def selected?(object, key = nil) current = read_before_type_cast(object) return current && current == enum[key] if key current end
to_s()
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 45 def to_s name end
was(object)
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 35 def was(object) changes = object.send(:changed_attributes) key = changes.fetch(source, read_before_type_cast(object)) enum.key(key) if key end
write(object, key)
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 21 def write(object, key) write_after_type_cast(object, enum[key]) && key end
Private Instance Methods
read_before_type_cast(object)
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 51 def read_before_type_cast(object) source == name ? object[source] : object.send(source) end
write_after_type_cast(object, value)
click to toggle source
# File lib/simple_enum/accessors/accessor.rb, line 55 def write_after_type_cast(object, value) source == name ? object[source] = value : object.send("#{source}=", value) value end