2015-04-17 80 views
0

在開始將詳細信息保存到數據庫之前,我正在準備對象變量。Rails 4更新保存對象內容

我有3個對象,我需要保存orderorder_eventmessage

我已經實例化對象order_event,並希望在我保存到數據庫中更新訂單參數

@order_event = OrderEvent.new(order_event_params) 
    @order_event.update_attributes(event_date: @event.event_date) 

但Rails是試圖將其保存到數據庫並拋出以下錯誤

Mysql2::Error: Field 'order_id' doesn't have a default value: INSERT INTO `order_events` (`created_at`, `event_date`, `event_id`, `no_of_ppl`, `updated_at`) VALUES ('2015-04-17 10:20:11', '2015-01-22 00:00:00', 2, 1, '2015-04-17 10:20:11') 

M Y型

--- !ruby/object:OrderEvent 
attributes: 
    id: 
    order_id: 
    event_id: 2 
    no_of_ppl: 3 
    event_date: 
    cost: 
    total_cost: 
    status: 
    created_at: 
    updated_at: 

我要在保存之前更新EVENT_DATE,成本TOTAL_COST等。

+1

可能是你想使用'assign_attributes'?它不堅持對象。 – lx00st

回答

1

用於分配則params的,而不是使用update_attributesassign_attributes(它堅持他們)

1

您可以將值分配給您的PARAMS哈希,然後更新:

@order_event = OrderEvent.find(params[:id]) 
params[:order_event][:event_date] = @event.event_date 
if @order_event.update_attributes(order_event_params) 
    ...