Public activity gemi kullanıcıların site içerisinde hangi işlemleri yaptığını izlememizi sağlar. Bu daresteki proje uzerine inşa edeceğim.
Gem dosyamıza:
gem 'public_activity'
terminal:
$ bundle
$ rails g public_activity:migration
$ rake db:migrate
model/storage.rb
include PublicActivity::Model
tracked
Modelimize yeni veri ekleyelim
Activityler için controller oluşturalım:
terminal:
rails g controller activities index
config/routes.rb
dosyadan bu satırı silelim: get 'activities/index'
yerine bunu yazalım: resources :activities
activities_controller.rb
def index
@activities=PublicActivity::Activity.order("created_at desc")
end
view/activity/index.html.erb
<h1> Storage Takibi</h1>
<% @activities.each do |activity|%>
<%=activity.inspect%>
<%end%>
http://localhost:2000/activities adresine gittiğimizde eklediğimiz son kaydın bilgisi var fakat braz karısık duruyor. Biraz düzene ihtiyacı var gibi ..
bBu kaydın kimin tarafından tutulduğuda belli değil. Bunun için buradaki owner alanı bizim için yeterli
model/storage.rb
tracked owner: ->(controller,model) {controller && controller.current_user}
applictaion_controller.rb
include PublicActivity::StoreController
hide_action :current_user
activity_controller.rb
@activities=PublicActivity::Activity.order("created_at desc").where( owner_type: "User")
view/activity/index.html.erb
<h1> Storage Takibi</h1>
<% @activities.each do |activity|%>
<div class="activity">
<p>Eylemi yapan: <%=activity.owner.email if activity.owner%> </p>
<p>Eylemi yaptığı model: <%=activity.trackable_type%></p>
<p>Eylem Türü : <%=activity.key%></p>
<p>Eylem Yaptığı Storage Id : <%=activity.trackable_id%></p>
<br/>
</div>
<%end%>
Yeni kayıt ekleyelim ve bakalım:
Eğer manuel yapmak istersek;
view/public_activity/storage/_create.html.erb dosyasını oluştuurp içeriğini düzenleyelim:
<% if activity.trackable %>
<%= link_to activity.trackable.name, activity.trackable %>
<% else %>
which has since been removed
<% end %>
models/storage.rb dosyasındanda tracked satırını kaldırıp düzenleyelim:
include PublicActivity::Common
rails c ile konsole gecip yada controlların istediğimiz yerine yazarak istediğimiz şekilde kullanıcıları izleyebiliriz
@storage.create_activity :create, owner: current_user