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ó ...
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.