验证是否已保存或删除关系

时间:2017-12-12 14:11:17

标签: ruby-on-rails ruby

我想检查关系是否直接保存到控制器中。但目前我找不到解决方案

我的代码:

@ut = UsersTask.where(task_id: @task.id).where(user_id: @user.id).delete_all
if @ut.destroyed?
  @task.update(effectif: (@task.effectif -= 1))
end

2 个答案:

答案 0 :(得分:1)

你可以做出类似的事情:

respond_to do |format|
  if @task.users.include?(@user)
    format.js {render inline: "location.reload();" }
  else
    UsersTask.where(task_id: @task.id, user_id: @user.id).first_or_create
    @task.update(effectif: (@task.effectif += 1))
    format.js 
  end
end

答案 1 :(得分:0)

delete_all会返回一些受影响的行。我认为将@ut.countdelete_all的回报进行比较就足够了。只需将这两个值分配给变量并进行比较:

@ut = UsersTask.where(task_id: @task.id).where(user_id: @user.id)
@tasks_to_delete = @ut.size
@deleted_tasks = @ut.delete_all

if @tasks_to_delete.eql?(@deleted_tasks)
  @task.update(effectif: (@task.effectif -= 1))
end

或者,如果您不想将UsersTasks加载到@ut,则可以执行以下操作:

users_task_number = UsersTask.count
@ut = UsersTask.where(task_id: @task.id).where(user_id: @user.id).delete_all
if UsersTask.count.eql?(users_task_number - @ut)
  @task.update(effectif: (@task.effectif -= 1))
end