Ich verwende den Ahoy-Edelstein, um Benutzeraktionen in einer Rails 4-App aufzuzeichnen. Ereignisse werden aufgezeichnet und in der Tabelle Ahoy :: Event gespeichert. Für jedes Ereignis ist ein Hash-Attribut properties
als Text gespeichert. In diesem Fall versuche ich, die Anzahl der Artikelansichten für einen bestimmten Artikel zurückzugeben.Abfragen des Ahoy-Eigenschafts-Hashwerts
Ich folge der vorgeschlagenen Syntax in der Gem-Dokumentation hier: https://github.com/ankane/ahoy#querying-properties, die ein Beispiel Ahoy::Event.where("properties LIKE '%\"store_id\": \"1\"%'").count
für die Abfrage eines Eigenschaften-Text-Hash gibt, aber ich konnte keine genauen Ergebnisse zurückgeben.
Hier ist der Controller-Event ich dies zu testen bin Tracking:
def show @article = Article.friendly.find(params[:id]) ... ahoy.track "Viewed article", article_id: @article.id ... end
In Konsole wie erwartet ich ein Ereignis sehen kann, wird zurückgegeben, wenn ich für Artikel mit dem Namen zu suchen: „gesehen Artikel“ :
Ahoy::Event.where(name: "Viewed article") Ahoy::Event Load (89.1ms) SELECT "ahoy_events".* FROM "ahoy_events" WHERE "ahoy_events"."name" = $1 [["name", "Viewed article"]] => #<ActiveRecord::Relation [#<Ahoy::Event id: "6cda3790-625d-4b73-8ef0-262a26b29618", visit_id: "2d56efa6-3590-4a64-acec-c0fd0ba07727", user_id: nil, name: "Viewed article", properties: {"article_id"=>562}, time: "2016-06-03 18:49:28">]>
Aber wenn ich durch Abfragen für Ereignisse mit dem entsprechenden article_id das gleiche Ereignis zu finden versuchen, wird das Ereignis nicht gefunden:
Ahoy::Event.where("properties LIKE '%\"article_id\": \"562\"%'").count (207.5ms) SELECT COUNT(*) FROM "ahoy_events" WHERE (properties LIKE '%"article_id": "562"%') => 0
Alle Vorschläge werden sehr geschätzt.