Public activity gem in rails

Xin chào các bạn. Hnay mình xin hướng dẫn cơ bản cách sử dụng gem public activity trong rails.

  1. Bước cài đặt Gemfile

    Gemfile

    gem "public_activity"
Terminal
    Bundle install
Migrate cho activities và migrate cho database
    rails g public_activity:migration
    rails db:migrate
Đến đây các bạn đã hoàn thành cơ bản xong cấu hình để sử dụng gem trong model để có thể tạo ra các activity. Giờ chúng ta chuyển sang cấu hình trong model nhé.
  1. Sử dụng trong model

    Để cho public_activity gem tự động tracked trong model các bạn sử dụng như sau: Ví dụ các bạn muốn activity trên model Review(tạo bài nhận xét) trong một tour du lịch chẳng hạn. Thì trong ../model/review.rb:

    include PublicActivity::Model
    tracked
  1. Ngoài ra có thể sử dụng trong controller.

    Ngoài ra bạn có thể custom activities bằng cách sử dụng trong controller như sau: Trong controller/review_controller.rb

    ...
    def create
      @review.create_activity :create, owner: current_user
      #owner là gán chủ thể thực hiện các activity này
    end
  1. Hiển thị ra view nếu muốn.

    4.1 Tạo activity controller

    rails g controller Activities
Trong controller
    def index
      @acitivities = PublicActivity::Activity.all
    end
Trong view
views/activities/index.html.erb
     <% @activities.each do |activity| %>
        <div class="col-md-12 div-activity">
          <%= link_to activity.owner.name, activity.owner if activity.owner %>
      #lấy tên của chủ thể thực hiện activities
          <%= render_activity activity %>
        </div>
    <% end %>
app/views/public_activity/shared/_form_create.html.erb
    <% if activity.trackable %>
      <%= link_to activity.trackable.tour.name, activity.trackable.tour %>
    <% else %>
      Error activity
    <% end %>
app/views/public_activity/review/_create.html.erb
    <%= render "public_activity/shared/form_create", activity: activity %>
Khi các bạn tạo activity thì với actice create thì nó sẽ nhận view là _create.html.erb như trên
Các bạn chỉ cần thêm các view _update.html.erb or _destroy.html.erb nó sẽ nhận actice update và destroy.

Còn cái mục form shared kia mình gom code cho gọn thôi.

Chắc cũng thế thôi còn một số custom khác mình xin có một bài khác. Hẹn gặp lại các bạn

Link tham khảo:

https://github.com/framgia/fbt_4/pull/30/files

https://github.com/chaps-io/public_activity