2017-10-16 77 views
0

我想弄清楚如何只更新表中的特定列。如果我在表中有六列,是否可以更新参数传递的列?基于params传递的更新表

我在控制器中有以下update方法。

def update 
    customer_details = Customer.find(params[:id]) 
    customer_details.update!(col1: params[:param1], 
          col2: params[:param2], 
          col3: params[:param3], 
          col4: params[:param4], 
          col5: params[:param5]) 
    head :no_content 
end 

当我刚刚通过和param2param3,我想只更新col2col3。我怎样才能做到这一点?

回答

0

你可以做这样的事情

attributes = { 
    col1: params[:param1], 
    col2: params[:param2], 
    col3: params[:param3], 
    col4: params[:param4], 
    col5: params[:param5] 
} 
attributes.select! { |_k, v| v.present? } 
customer_details.update!(attributes) 
0

不明确的,你只透过param2param3的意思。

  • 如果你有params,其:params2:params3键和值缺失,则需要没有什么特别的。只要做到:

    customer_details.update!(params) 
    
  • 如果你有params,其:params2:params3nil,然后执行:

    customer_details.update!(params.compact)