是的,我知道这是一个很奇怪的目的
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
在UI中处理
or
中的
create_or_delete
让我头晕。我有点觉得自己很愚蠢。 尽可能少的工程。在 UI 中处理它