Un jour, une gem

02/08/2012

Jeudi c'est Likeable

gem install likeable

Pour tout liker

Aujourd’hui une gem pour permettre à un model d’en liker d’autres. Pour la mise en place de la gem cela se passe comme ceci :

initializers/likeable.rb

Likeable.setup do |likeable|
    likeable.redis  = Redis.new
end

On prépare le model qui peut liker :

class User
    include Likeable::UserMethods
end

Et on ajoute des models qui peuvent se faire liker :

class Comment
    include Likeable
end

Maintenant vous avez accès à tout ce qu’il faut comme méthodes :

comment = Comment.find(15)
comment.like_count                  # => 0
current_user.like!(comment)         # => #<Likeable::Like ... >
comment.like_count                  # => 1
comment.likes                       # => [#<Likeable::Like ... >]
comment.likes.last.user             # => #<User ... >
comment.likes.last.created_at       # => Wed Jul 27 19:34:32 -0500 2011

comment.liked_by?(current_user)     # => true
current_user.all_liked(Comment)     # => [#<Comment ...>, ...]

liked_comment = Likeable.find_by_resource_id("Comment", 15)
liked_comment == comment            # => true

Et pour finir, tout est stocké avec Redis :)

Le lien utile

Sur une idée de @msadouni