找不到用户时获得结果

时间:2013-11-18 11:07:20

标签: ruby-on-rails ruby-on-rails-4

我正在尝试查看我刚发现的用户是否已属于我的小组。

事情是;如果它存在,则给出true。如果它不存在,则说Couldn't find User with id=2 [WHERE "groups_users"."group_id" = ?]。在那种情况下,为什么我没有得到false

email = params[:email]

if !email.blank?
  userExists = User.find_by_email(email)
  if userExists.blank?
    #User doesn't exist
  else
    #User does exist
    @userIsInGroup = !@group.users.find(userExists).blank?
  end
end

使用@userIsInGroup = @group.users.find(userExists)代替IF并不能解决问题。

3 个答案:

答案 0 :(得分:1)

if userExists.blank?
    #User doesn't exist
  else
    #User does exist
    @userIsInGroup = !@group.users.find(userExists).blank?
  end

如果记录不存在,则ActiveRecord返回

  

ActiveRecord :: RecordNotFound:找不到ID = number

的用户
@userIsInGroup = !@group.users.find_by_id(userExists).blank?

find_by_column_name返回nil

答案 1 :(得分:0)

我想你想要@userIsInGroup中的布尔值,如果是这样的enumerable类的include方法如下

已更改

@userIsInGroup = @group.users.find(userExists).blank?

@userIsInGroup = @group.users.include?(userExists)

答案 2 :(得分:-1)

您可以使用

调用它
if User.exists?(email: params[:email])
  do stuff
else
  don't do stuff
end