检查rails中是否存在记录

时间:2016-03-04 16:07:45

标签: mysql ruby-on-rails

我有一个用于跟踪用户在线活动的人员表。我想通过以下查询检查群组中的任何用户是否在线:

.controller('show_post', function ($scope, $http) {
$scope.display_post = function () {
    var request = $http({
        method: "get",
        url: "url here......",
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
    });
    request.success(function (data) {
        $scope.post=data;
    });
}
})

注意:候选人介绍一群人;如果用户在线,在线属性将为true

我意识到这样的查询效率不高,因为它返回所有合格用户然后检查存在。有没有更好的方法更有效地做同样的事情?

谢谢

2 个答案:

答案 0 :(得分:0)

使用window.location.assign查询会更有效:

COUNT

然后,您只需与Person.where(:person_id => candidates, :online => true).count 进行比较:

0

答案 1 :(得分:0)

你可以做点什么:

people = Person.select(:id, :online).where(id: candidate_ids)

然后除非people.blank?循环通过人们,检查他们是否在线,并对在线人员做任何你需要做的事情。使用select不会加载整个对象,只加载你需要的东西。然后当你说:

person.online

这不是一个查询,你只是从一个数组中获取它。作为奖励,如果您只有一个用户,则.select也适用于.find。

相关问题