如果用于create_or_delete,路由应该有什么HTTP方法

问题描述 投票:0回答:1

是的,我知道这是一个很奇怪的目的

create_or_delete
。但我有一个用户的出勤表,并且在前端有一个复选框,

  • 勾选后->创建考勤记录
  • 不勾选时->删除考勤记录

创建出勤表,以便当用户某一天出勤时,会创建一条记录。当用户在特定日期缺席时,该日期将没有记录。

在管理端,特定日期下方有一个复选框,可以更改出勤状态。

对于某些业务需求,我不能有布尔值

is_attended
或类似的东西。

所以我的问题是,对于下面的路线,应该采用什么方法?我能想到最多的一次是

PUT
,但不确定删除部分。

或者前端应该首先处理这个问题,这样:

  • 选中复选框后,它会发送
    POST
    创建出勤请求
  • 未选中时,会发送
    DELETE
    删除考勤请求
def create_or_delete
    attendance = Attendance.find_by(date: attendance_params[:date], user_id: attendance_params[:user_id])
    if attendance
      delete_attendance attendance
    else
      create_attendance attendance
    end
  end

  private
  def attendance_params
    params.require(:attendance).permit(:date ,:user_id)
  end

  def create_attendance(attendance)
    attendance = Attendance.new(attendance_params)
    if attendance.save
      render json: { message: "Attendance updated", status: 200 }, status: :ok
    else
      render json: { errors: attendance.errors, status: 422 }, status: :unprocessable_entity
    end
  end

  def delete_attendance(attendance)
    if attendance.destroy
        render json: { message: "Attendance updated", status: 200 }, status: :ok
      else
        render json: { errors: "Failed updating attendance", status: 422 }, status: :unprocessable_entity
      end
  end
ruby-on-rails http web routes http-method
1个回答
0
投票

在UI中处理

or

中的
create_or_delete
让我头晕。我有点觉得自己很愚蠢。
尽可能少的工程。在 UI 中处理它

© www.soinside.com 2019 - 2024. All rights reserved.