136136 t . timestamps null : false
137137 end
138138
139+ create_table :order_flags , force : true do |t |
140+ t . string :name
141+ end
142+
143+ create_table :purchase_orders_order_flags , force : true do |t |
144+ t . references :purchase_order , :order_flag , index : true
145+ end
146+ add_index :purchase_orders_order_flags , [ :purchase_order_id , :order_flag_id ] , unique : true , name : "po_flags_idx"
147+
139148 create_table :line_items , force : true do |t |
140149 t . integer :purchase_order_id
141150 t . string :part_number
@@ -277,12 +286,22 @@ def remove(id)
277286end
278287
279288class CustomerOrder < ActiveRecord ::Base
289+ has_many :purchase_orders
280290end
281291
282292class PurchaseOrder < ActiveRecord ::Base
293+ belongs_to :customer
294+ has_many :line_items
295+
296+ has_and_belongs_to_many :order_flags , join_table : :purchase_orders_order_flags
297+ end
298+
299+ class OrderFlag < ActiveRecord ::Base
300+ has_and_belongs_to_many :purchase_orders , join_table : :purchase_orders_order_flags
283301end
284302
285303class LineItem < ActiveRecord ::Base
304+ belongs_to :purchase_order
286305end
287306
288307### PORO Data - don't do this in a production app
@@ -422,6 +441,9 @@ class PurchaseOrdersController < JSONAPI::ResourceController
422441
423442 class LineItemsController < JSONAPI ::ResourceController
424443 end
444+
445+ class OrderFlagsController < JSONAPI ::ResourceController
446+ end
425447 end
426448
427449 module V7
@@ -433,6 +455,9 @@ class PurchaseOrdersController < JSONAPI::ResourceController
433455
434456 class LineItemsController < JSONAPI ::ResourceController
435457 end
458+
459+ class OrderFlagsController < JSONAPI ::ResourceController
460+ end
436461 end
437462end
438463
@@ -817,6 +842,13 @@ class PurchaseOrderResource < JSONAPI::Resource
817842
818843 has_one :customer
819844 has_many :line_items
845+ has_many :order_flags , acts_as_set : true
846+ end
847+
848+ class OrderFlagResource < JSONAPI ::Resource
849+ attributes :name
850+
851+ has_many :purchase_orders
820852 end
821853
822854 class LineItemResource < JSONAPI ::Resource
@@ -831,6 +863,7 @@ class LineItemResource < JSONAPI::Resource
831863 module V7
832864 CustomerResource = V6 ::CustomerResource . dup
833865 PurchaseOrderResource = V6 ::PurchaseOrderResource . dup
866+ OrderFlagResource = V6 ::OrderFlagResource . dup
834867 LineItemResource = V6 ::LineItemResource . dup
835868 end
836869end
0 commit comments