gem public activity
Bài đăng này đã không được cập nhật trong 8 năm
Giới thiệu về gem public activity
Như những bài trước đây của mình, chúng ta cùng định nghĩa về gem public activity nhé.
- Hiểu một cách đơn giản, gem này cho phép ghi lại những gì xảy ra trong ứng dụng của bạn và cho phép bạn khả năng để trình bày lại những điều đó cho người dùng xem một cách tổng quan và dễ hiểu nhất.
- Nó thường được dùng trong ActiveRecord, Mongoid 3 và MongoMapper của rails
Ví dụ đơn giản về gem này có thể thấy như user có thể xem các hành động của user mình follow như tạo 1 bài post mới hay sửa và xóa các bài post đó chẳng hạn.
1. Nào, giờ đến phần sử dụng
Như những gem khác, đầu tiên là thêm vào gem file
gem "public_activity"
Theo mặc định, gem public activity sẽ sử dụng ActiveRecord. Tuy nhiên, nếu bạn muốn sử dụng Mongoid hay MongoMapper trong backend thì bạn có thể tạo một tập tin trong folder initializer với các mã tương ứng như sau:
- Với Mongoid
# config/initializers/public_activity.rb
PublicActivity.configure do |config|
config.orm = :mongoid
end
- Với MongoMapper
# config/initializers/public_activity.rb
PublicActivity.configure do |config|
config.orm = :mongo_mapper
end
Tiếp đến là việc tạo bảng cơ sở dữ liệu:
rails g public_activity:migration
rake db:migrate
Sau đó là include PublicActivity::Model
và thêm tracked
vào model mà bạn muốn theo dõi các hoạt động:
- Đối với ActiveRecord
class Article < ActiveRecord::Base
include PublicActivity::Model
tracked
end
- Đối với Mongoid:
class Article
include Mongoid::Document
include PublicActivity::Model
tracked
end
- Đối với Mongo Mapper:
class Article
include MongoMapper::Document
include PublicActivity::Model
tracked
end
Và bây giờ các action cơ bản như create/update/destroy đã được ghi trong bảng activities.
Bạn có thể kích hoạt các tùy chỉnh bằng cách thiết lập các thông số cần thiết của bạn và kích hoạt create_activity trên mô hình theo dõi, như ví dụ sau đây:
@article.create_activity key: 'article.commented_on', owner: current_user
2. Xong phần xử lý, giờ làm cách nào để hiển thị nó đây?
Rất đơn giản, để hiển thị ra các hành động đã được lưu lại bạn chỉ cần querry đến PublicActivity::Activity
model thôi (mình sẽ lấy ví dụ với controller notification):
# notifications_controller.rb
def index
@_activities = PublicActivity::Activity.all
end
Và trong view bạn chỉ cần gọi ra thôi:
<%= render_activities(@_activities) %>
Lưu ý: render_activities là một alias cho render_activity và bạn cũng có thể tùy chọn để các hoạt động render và render_activity thông qua nhau dễ dàng hơn:
<%= render_activities(@activities, layout: :activity) %>
Ở đây, các hoạt động được ghi lại này sẽ được viết trong 1 file riêng để được render lại app/views/layouts/_activity.html.erb
Trên đây là một số hiểu biêt của mình về gem public activity. Bài viết có sự tham khảo ở đây.
Mong các bạn góp ý cho bài viết thêm hữu ích hơn.
All rights reserved