class SimpleEnum::Multiple::Accessors::MultipleAccessor
Public Class Methods
new(name, enum, source = nil, prefix = nil)
click to toggle source
Calls superclass method
# File lib/simple_enum/multiple/accessors/multiple_accessor.rb, line 8 def initialize(name, enum, source = nil, prefix = nil) super @source = source.to_s.presence || "#{@name.singularize}#{SimpleEnum.suffix.pluralize}" end
Public Instance Methods
fetch_keys(values)
click to toggle source
# File lib/simple_enum/multiple/accessors/multiple_accessor.rb, line 47 def fetch_keys(values) values.map do |value| enum.key(value) end end
fetch_values(keys)
click to toggle source
# File lib/simple_enum/multiple/accessors/multiple_accessor.rb, line 53 def fetch_values(keys) keys.map do |key| enum.value(key) end end
filter_keys(keys)
click to toggle source
# File lib/simple_enum/multiple/accessors/multiple_accessor.rb, line 41 def filter_keys(keys) keys.select do |key| enum.value(key) end end
read(object)
click to toggle source
# File lib/simple_enum/multiple/accessors/multiple_accessor.rb, line 13 def read(object) CollectionProxy.new(read_before_type_cast(object), self) end
scope(collection, value)
click to toggle source
# File lib/simple_enum/multiple/accessors/multiple_accessor.rb, line 37 def scope(collection, value) raise NoMethodError, "scopes for accessor: :multiple are not supported!" end
selected?(object, key = nil)
click to toggle source
# File lib/simple_enum/multiple/accessors/multiple_accessor.rb, line 22 def selected?(object, key = nil) current = read_before_type_cast(object) current.any? && if key current.all? do current.include?(enum.value(key)) end else true end end
was(object)
click to toggle source
# File lib/simple_enum/multiple/accessors/multiple_accessor.rb, line 33 def was(object) fetch_keys(object.send(:attribute_was, source).to_a) end
write(object, keys)
click to toggle source
# File lib/simple_enum/multiple/accessors/multiple_accessor.rb, line 17 def write(object, keys) keys = filter_keys(Array.wrap(keys)) write_after_type_cast(object, fetch_values(keys)) && keys end
Private Instance Methods
read_before_type_cast(object)
click to toggle source
Calls superclass method
# File lib/simple_enum/multiple/accessors/multiple_accessor.rb, line 61 def read_before_type_cast(object) result = super unless result result = [] write_after_type_cast(object, result) end result end