Gem public_activity
Bài đăng này đã không được cập nhật trong 7 năm
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