在开始将详细信息保存到数据库之前,我正在准备Object变量。
我需要保存3个对象order
,order_event
,message
我已经实现了对象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')
我的模特
--- !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,cost,total_cost 等。
答案 0 :(得分:1)
使用assign_attributes
分配参数而不是update_attributes
(它会保留它们)
答案 1 :(得分:1)
您可以将值分配给params哈希,然后更新:
@order_event = OrderEvent.find(params[:id])
params[:order_event][:event_date] = @event.event_date
if @order_event.update_attributes(order_event_params)
...