Public activity gem in rails
Bài đăng này đã không được cập nhật trong 8 năm
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.
-
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é.
-
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
-
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
-
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:
All rights reserved