рельсы и система повышения / понижения - PullRequest
0 голосов
/ 25 февраля 2012

извините, если это дубликат, я искал что-то подобное перед публикацией, но безуспешно.

Так что в основном мне нужна система повышения / понижения (она очень похожа на ту, что здесь описана в стеке).

У меня есть 6 оцениваемых моделей, поэтому полиморфная ассоциация кажется лучшим вариантом. Но поскольку эта таблица, вероятно, будет содержать значительное количество записей, не займет ли слишком много времени получение рейтинга элемента (upvotes_count - downvotes_count)?

На самом деле, я думаю о добавлении новой строки в каждую оцениваемую модель, что-то вроде current_rating_value. Так что это значение будет изменяться каждый раз, когда объект рейтинга будет создан / уничтожен.

Не могли бы вы посоветовать, что может быть лучшим вариантом в этом случае? Дополнительный вызов UPDATE для изменения current_rating_value или дополнительный вызов SELECT (SUM ...) для его вычисления?

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

В зависимости от того, сколько трафика вы получаете, загружая эти модели, он может облагать ресурсы более, чем хотелось бы.Я закончил тем, что использовал в своих проектах acts_as_votable gem.Очень легко сделать модель голосовой, а также кешировать данные, что тоже здорово.

1 голос
/ 25 февраля 2012

для долгосрочной производительности, вы должны добавить что-то вроде current_rating_value в каждую пригодную для оценки модель. Каждый раз, когда появляется новый тариф, просто обновите это поле.

В противном случае это будет очень вредно для производительности, когда вам придется вычислять рейтинг каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...