Class: Exo::ItemBuilder

Inherits:
Struct
  • Object
show all
Defined in:
app/services/exo/item_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#itemObject

Returns the value of attribute item

Returns:

  • (Object)

    the current value of item



1
2
3
# File 'app/services/exo/item_builder.rb', line 1

def item
  @item
end

Instance Method Details

#update_item(params) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'app/services/exo/item_builder.rb', line 27

def update_item params
  puts "[Exo::ItemBuilder] Update item ..."
  if item.new_record?
    item.save
  else
    item.update_attributes params
  end
  # Values post save is required to trigger assets content to persist.
  item.values.each do |r|
    r.save!
  end
end

#update_values(params) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/services/exo/item_builder.rb', line 2

def update_values params
  puts "[Exo::ItemBuilder] Update values ..."
  _resource = item.resource
  params.each do |k, v|
    puts " * #{k}"
    _field = _resource.meta_field_for k
    _value = item.value_for k

    if _value && _value.class != _field.value_class
      _value.destroy
      _value = nil
    end

    unless _value
      _value = _field.value_class.new
      _value.field_slug_id = k.to_s
      _value.item = item
    end

    _value.value_update v

    puts "=> #{item.values.inspect}"
  end
end