我试图找出如何只更新表中的特定列。如果表中有六列,是否可以只更新传递参数的列?
我在控制器中使用了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
当我仅传递param2
和param3
时,我想仅更新col2
和col3
。我怎样才能做到这一点?
答案 0 :(得分: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)
答案 1 :(得分:0)
仅传递param2
和param3
如果您有params
,其:params2
和:params3
个键和值缺失,则无需任何特殊内容。只是做:
customer_details.update!(params)
如果您的params
和:params2
值为:params3
nil
,请执行以下操作:
customer_details.update!(params.compact)