我有一个用于跟踪用户在线活动的人员表。我想通过以下查询检查群组中的任何用户是否在线:
.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
我意识到这样的查询效率不高,因为它返回所有合格用户然后检查存在。有没有更好的方法更有效地做同样的事情?
谢谢
答案 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。