Class: Effective::QbOrderItemsForm

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
app/models/effective/qb_order_items_form.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id:, orders:) ⇒ QbOrderItemsForm

Returns a new instance of QbOrderItemsForm.



9
10
11
12
# File 'app/models/effective/qb_order_items_form.rb', line 9

def initialize(id:, orders:)
  @id = id
  @orders = Array(orders)
end

Instance Attribute Details

#idObject

Returns the value of attribute id.



7
8
9
# File 'app/models/effective/qb_order_items_form.rb', line 7

def id
  @id
end

#ordersObject

Returns the value of attribute orders.



7
8
9
# File 'app/models/effective/qb_order_items_form.rb', line 7

def orders
  @orders
end

Instance Method Details

#persisted?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'app/models/effective/qb_order_items_form.rb', line 50

def persisted?
  true
end

#qb_order_itemsObject



14
15
16
# File 'app/models/effective/qb_order_items_form.rb', line 14

def qb_order_items
  @qb_order_items ||= orders.flat_map { |order| order.order_items.map { |oi| oi.qb_item_name; oi.qb_order_item } }
end

#qb_order_items_attributes=(qb_order_item_atts) ⇒ Object

This is required by SimpleForm and Rails for non-ActiveRecord nested attributes



19
20
21
22
23
24
25
26
# File 'app/models/effective/qb_order_items_form.rb', line 19

def qb_order_items_attributes=(qb_order_item_atts)
  qb_order_item_atts.each do |attributes|
    qb_order_item = qb_order_items.find { |qb_order_item| qb_order_item.order_item_id.to_s == attributes[:order_item_id] }
    raise "unable to find qb_order_item with order_item_id #{attributes[:order_item_id]}" unless qb_order_item.present?

    qb_order_item.attributes = attributes.except(:id, :order_item_id)
  end
end

#saveObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'app/models/effective/qb_order_items_form.rb', line 28

def save
  qb_order_items.each { |qb_order_item| qb_order_item.valid? }
  return false unless qb_order_items.all? { |qb_order_item| qb_order_item.valid? }

  success = false

  Effective::QbOrderItem.transaction do
    begin
      qb_order_items.each { |qb_order_item| qb_order_item.save! }
      success = true
    rescue => e
      raise ActiveRecord::Rollback
    end
  end

  success
end

#to_paramObject



46
47
48
# File 'app/models/effective/qb_order_items_form.rb', line 46

def to_param
  id
end