Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 验证关系是否已保存或删除_Ruby On Rails_Ruby - Fatal编程技术网

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

Ruby on rails 验证关系是否已保存或删除,ruby-on-rails,ruby,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 delete\u all返回许多受影响的行。我认为将@ut.count与delete\u all的返回进行比较就足够了。只需将这两

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

我的代码:

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

delete\u all
返回许多受影响的行。我认为将
@ut.count
delete\u 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

你可以这样做:

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

effectif
应该是任务计数吗?你可以只做
@task.users\u tasks.count
或(如果是特定于用户的)
@task.users\u tasks.where(user:@user.count)
谢谢@SteveTurczyn bu这是一个非常繁重的请求,所以我想避免它谢谢你的回答@MrShemek,它看起来是一个很好的解决方案@Jacquesmnet,对于我的案例来说,这是一个非常酷和优雅的解决方案!!谢谢