+2

Gem public_activity

Nếu bạn đang lập trình web bằng ROR và xây dựng chức năng theo dõi hoạt động của người dùng thì gem public_activity sẽ là một lựa chọn tuyệt vời cho bạn.

Cài đặt

Chạy lệnh sau ở terminal

gem install public_activity

hoặc thêm vào gemfile:

gem 'public_activity'

và chạy lệnh sau

bundle install

Cài đặt với DB

Mặc định public_activity sử dụng Active Record. Nếu bạn muốn sử dụng cho Mongoid hoặc MongoMapper:

Mongoid

# config/initializers/public_activity.rb
PublicActivity::Config.set do
  orm :mongoid
end

MongoMapper

# config/initializers/public_activity.rb
PublicActivity::Config.set do
  orm :mongo_mapper
end

Sau đó bạn chạy các lệnh sao để tạo migration cho activities và migrate db

rails g public_activity:migration
rake db:migrate

Cấu hình cho model

Include PublicActivity::Model và tracked vào model bạn muốn theo dõi

ActiveRecord

class Article < ActiveRecord::Base
  include PublicActivity::Model
  tracked
end

Mongoid

class Article
  include Mongoid::Document
  include PublicActivity::Model
  tracked
end

MongoMapper

class Article
  include MongoMapper::Document
  include PublicActivity::Model
  tracked
end

Bây giờ mọi hoạt đông create/update/delete Article đã được ghi vào bảng Activities.

Custom activities

Bạn có thể tự tạo cho mình một activities nêu bạn muốn như sau:

@article.create_activity key: 'article.commented_on', owner: current_user

Displaying activities

Để hiển thị activities, đơn giản là bạn chỉ cần query từ PublicActivity::Activity model

# notifications_controller.rb
def index
  @activities = PublicActivity::Activity.all
end

và tại views của bạn:

<%= render_activities(@activities) %>

Chú ý rằng render_activity được sử dụng để hiện thị nhưng templates trong thư mục views/public_activity. Với câu lệnh trên nó sẽ lấy các templates trong views/public_activity/article. Và thư mục article sẽ chứa :

  • _creat.html.erb
  • _update.html.erb
  • _delete.html.erb

Cài đặt on/off chức năng theo dõi

Để bật/tắt tất cả các tracked:

PublicActivity.enabled = true
PublicActivity.enabled = false

Bật/Tắt chức năng theo dõi một model:

Article.public_activity_on
Article.public_activity_off

Chúc bạn thành công 😃


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí