在铲除用户之前,如何验证用户不存在?

时间:2018-05-10 15:08:51

标签: ruby-on-rails duplicates include exists verification

Rails新手所以忍受我...

我创建了一个日历应用,日历的所有者可以将其他用户添加到日历中。我刚刚意识到他们可以多次添加同一个用户,这显然是我不想要的。我尝试了很多不同的东西,包括检查模型内部的方法,那些不起作用......我正在使用包含来验证......

我控制器中的当前方法是:

def update
  if @calendar.calendar_admin?(current_user)
    @new_user = User.find(params[:calendar][:user_ids])
    if @calendar.users.includes(@new_user)
      redirect_to user_calendar_path(@calendar), notice: 'This user has already been added to this calendar.'
    else
      @calendar.users << @new_user
      if @calendar.save
        redirect_to user_calendar_path(@calendar), notice: 'Your calendar has been updated.'
      else
        redirect_to user_calendar_path(@calendar)
      end
    end
  end
end

无论怎样,它都会被“此用户已添加到此日历”所困扰,即使用户没有。我正在铲除新用户,但我甚至不确定这是否是添加新用户的正确方式?

输入

1 个答案:

答案 0 :(得分:1)

您想使用include?代替includes

include?根据集合是否包含特定项目返回布尔值。 includes是一种不同的方法,它将返回一个真正的非零值。