Rails 4更新对象内容而不保存

时间:2015-04-17 10:24:06

标签: ruby-on-rails ruby-on-rails-4

在开始将详细信息保存到数据库之前,我正在准备Object变量。

我需要保存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')

我的模特

--- !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 等。

2 个答案:

答案 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)
    ...