Рельсы. Система Оценок. Плагины

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

Если правильно подойти к этой теме, то рейтинги – это очень крутая и нужная вещь.

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

хороший статья написал в этой теме альфа .

Но я хотел бы обсудить только стандартные инструменты, которые есть у сообщества Rails. Мы говорим о плагинах.

Погуглив 10 минут, я нашел только два.

Ни один из них мне не подошел =).

На всякий случай вот краткий обзор этих плагинов (это скорее переведенные выдержки из обзоров — этими плагинами я не пользовался и не планирую).

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

Действует_как_оценено Ссылки по теме: devblog.famundo.com/articles/2007/02/04/a-new-rails-plugin-acts_as_rated www.rubynaut.net/articles/2007/03/18/rails_ajax_rating_system_part_1 Rubyforge.org/projects/acts-as-rated Основным заявленным преимуществом плагина является множество настраиваемых параметров и кэширование, что уменьшает количество обращений к базе данных.



Монтаж

установка скрипта/плагина svn://rubyforge.org/var/svn/acts-as-rated/trunk/acts_as_rated

Пример использования



class Book < ActiveRecord::Base acts_as_rated end u = User.find_by_name "guy" b = Book.find "Catch 22" b.rate 5, u u = User.find_by_name "john" b.rate 3, u b.rating_average # => 4 Book.find_by_rating 2.3 # => [<Book:"Catch 22">] b.find_rated_by User.find_by_name("guy") # => [<Book:"Catch 22">]

Плагин поставляется с пакетом миграций, который позволяет легко добавить его в любой проект. Тесты также включены.



Основные функции

* Встраивание в любую модель * Данные о рейтинге могут храниться как во внешней таблице, так и непосредственно в базе данных модели.

* Ограничение лимитов рейтинга * Подсчет среднего и общего рейтинга и количества голосов * Поиск объектов по рейтингу или границам рейтинга, а также по рейтингу Acts_as_rateable Ссылки по теме: satishchauhan.wordpress.com/2007/08/24/star-rating-in-ruby-on-rails www.naffis.com/2006/8/31/rails-ajax-star-rating-system Rubyforge.org/projects/rateableplugin

Монтаж

установка скрипта/плагина svn://rubyforge.org/var/svn/rateableplugin/trunk миграция сценарий/генерация миграции add_ratings

def self.up create_table :ratings do |t| t.column :rating, :integer # You can add a default value here if you wish t.column :rateable_id :integer, :null => false t.column :rateable_type, :string, :null => false end end def self.down drop_table :ratings end



Пример использования



class SillyWalk < ActiveRecord::Base # attributes: name, inventor acts_as_rateable end SillyWalk.new(:name => "Not Very Silly", :inventor => "Mr. Pudey").

save SillyWalk.new(:name => "A Bit Silly", :inventor => "Mrs. Two-Lumps", :rating => 3).

save SillyWalk.new(:name => "Quite Silly", :inventor => "Mr. Teabag", :rating => 5).

save # To update the rating after creation of the initial record. SillyWalk.find_by_name("Not Very Silly").

rate(1) # You could also do this SillyWalk.find_by_name("Not Very Silly").

rating = 1 # Retreive the rating SillyWalk.find_by_name("Not Very Silly").

rating # => 1 # Find silly walks with a rating of at least 3 SillyWalk.find_all_by_rating(3.-1) # => ["A Bit Silly", "Quite Silly"] # Find silly walks with a rating of 5 (only) SillyWalk.find_all_by_rating(5) # => ["Quite Silly"] # Find silly walks with a rating of 1 or 5 SillyWalk.find_all_by_rating([1,5]) # => ["Not Very Silly", "Quite Silly"] # Find silly walks with a rating between 3 and 5, inclusive SillyWalk.find_all_by_rating(3.5) # => ["A Bit Silly", "Quite Silly"] # You can also mix specific ratings and ranges. SillyWalk.find_all_by_rating([1,3.5]) # => ["Not Very Silly", "A Bit Silly", "Quite Silly"]



Основные функции

* Подходит для любой модели.

методы *rate(int) - оценивает объект *рейтинг= - то же самое * рейтинг - возвращает рейтинг объекта * find_all_by_rating — возвращает все объекты, удовлетворяющие условию * find_by_rating — возвращает первый объект, удовлетворяющий условию Заключение Эти два представителя весьма ограничены и справляются лишь с задачей дать человеку возможность сказать хорошо/плохо.

Это конечно что-то, но явно недостаточно.

Поэтому вывод - написать что-то свое.

Теги: #ruby #rails #ruby onrails #плагины #рейтинг #web 2.0 #web 2.0 #web 2.0 #ruby

Вместе с данным постом часто просматривают: