gem public activity

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.