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. 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 ...
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.
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
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
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.
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
Để 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
Để 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