Rails: 在params中查找或初始化然后合并

Rails: Find or initialize and then merge in params

我在我的控制器中使用 find_or_initialize_by 然后想将附加参数应用到记录,无论是新的还是现有的。这可以用 Railsy 的方式来做,还是我必须遍历参数?

def create
  re_evaluation = @client.re_evaluations.find_or_initialize_by(program_id: re_evaluation_params[:program_id], check_in_id: re_evaluation_params[:check_in_id])

  # apply remaining re_evaluation_params here

  if re_evaluation.save
    render json: re_evaluation, status: :created
  else
    render json: re_evaluation.errors.full_messages, status: :unprocessable_entity
  end
end

您应该能够像往常一样分配参数。

re_evaluation.assign_attributes(re_evaluation_params)

if re_evaluation.save
  ...