Class: Fiona7::AttributeWriters::ReferencelistAsLinklist

Inherits:
AttributeWriter show all
Defined in:
lib/fiona7/attribute_writers/referencelist_as_linklist.rb

Instance Method Summary collapse

Methods inherited from AttributeWriter

#initialize

Constructor Details

This class inherits a constructor from Fiona7::AttributeWriters::AttributeWriter

Instance Method Details

#call(value, claimed_type = nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/fiona7/attribute_writers/referencelist_as_linklist.rb', line 6

def call(value, claimed_type=nil)
  # FIXME: use a repository to improve performance
  ids = (value || []).map(&:to_s)
  if ids.empty?
    self.obj.set(self.attr_name, [])
  else
    objects_map = Hash[self.klass.where(obj_id: ids).map {|o| [o.id.to_s, o]}]
    objects = ids.map {|id| objects_map[id] }.compact
    self.obj.set(self.attr_name, objects)
  end
end