0

对于这个非常简单的问题,提前抱歉,但是在检查条件的同时设置变量的最佳方法是什么。例如,我有:

@friends = []
@user.facebook_friends.each do |key,value|
  if test = Authorization.includes(:user).find_by_uid(key) != nil
    @friends << {"name" => test.user.name, "facebook_image_url" => test.user.facebook_image_url}
  end
end

当我拉入授权记录时,我试图拉入用户记录,以最小化我的数据库查询。我知道我不会写

test = Authorization.includes(:user).find_by_uid(key) != nil

为了设置测试变量。编写此代码以使其正常运行的最佳方法是什么?

4

1 回答 1

3

你只需要括号:

(test = Authorization.includes(:user).find_by_uid(key)) != nil

这里还有一种更可靠的方式来做到这一点:

unless (test = Authorization.includes(:user).find_by_uid(key)).nil?
    @friends << {"name" => test.user.name, "facebook_image_url" => test.user.facebook_image_url}
end
于 2012-05-10T23:56:59.850 回答