2017-10-16 73 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)