@@ -15,9 +15,10 @@ def create
1515 @line_item = @order . contents . add (
1616 variant ,
1717 params [ :line_item ] [ :quantity ] || 1 ,
18- options : line_item_params [ :options ] . to_h
18+ options : line_item_params [ :options ] . to_h ,
19+ **extract_metadata
1920 )
20- set_metadata ( @line_item )
21+
2122 respond_with ( @line_item , status : 201 , default_template : :show )
2223 rescue ActiveRecord ::RecordInvalid => error
2324 invalid_resource! ( error . record )
@@ -27,7 +28,6 @@ def create
2728 def update
2829 @line_item = find_line_item
2930 if @order . contents . update_cart ( line_items_attributes )
30- set_metadata ( @line_item )
3131 @line_item . reload
3232 respond_with ( @line_item , default_template : :show )
3333 else
@@ -43,14 +43,6 @@ def destroy
4343
4444 private
4545
46- def set_metadata ( line_item )
47- line_item . update ( customer_metadata : line_item_params [ :customer_metadata ] )
48-
49- if can? ( :admin , Spree ::LineItem )
50- line_item . update ( admin_metadata : line_item_params [ :admin_metadata ] )
51- end
52- end
53-
5446 def load_order
5547 @order ||= Spree ::Order . includes ( :line_items ) . find_by! ( number : order_id )
5648 authorize! :update , @order , order_token
@@ -66,10 +58,21 @@ def line_items_attributes
6658 { line_items_attributes : {
6759 id : params [ :id ] ,
6860 quantity : params [ :line_item ] [ :quantity ] ,
69- options : line_item_params [ :options ] || { }
61+ options : line_item_params [ :options ] || { } ,
62+ **extract_metadata
7063 } }
7164 end
7265
66+ def extract_metadata
67+ metadata = { customer_metadata : line_item_params [ :customer_metadata ] }
68+
69+ if @current_user_roles &.include? ( "admin" )
70+ metadata [ :admin_metadata ] = line_item_params [ :admin_metadata ]
71+ end
72+
73+ metadata
74+ end
75+
7376 def line_item_params
7477 params . require ( :line_item ) . permit ( permitted_line_item_attributes )
7578 end
0 commit comments