MySQL заявление преобразовать в симпатичную инструкцию Rails AR? - PullRequest
0 голосов
/ 18 октября 2010

У меня есть заявление MySQL, которое заняло у меня всю ночь.Мне интересно, можно ли эту вещь превратить из прямого вызова в нечто вроде Object.find (: условия)

    ActiveRecord::Base.connection.execute("
    SELECT *, 
      (SELECT COUNT(*) 
      FROM scores AS temp2 
      WHERE temp2.score > scores.score 
      ORDER BY score DESC) + 1 AS rank 
    FROM scores 
    WHERE user_id=%s 
    ORDER BY score DESC" 
    % user_id).fetch_hash

Это утверждение является частью сайта с высокими показателями, созданного для игры для Android.Он получает высший балл и имеет подзапрос, который также дает ему рейтинг.

Может ли это быть сделано во что-то более приятное?Кроме того, это самый эффективный метод?

Спасибо, Джастин

1 Ответ

1 голос
/ 18 октября 2010

Это должно сделать это для вас:

user = Score.find_by_user_id(id)
rank = Score.count(:conditions => ['score > ?', user.score]) + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...