首先,这是我的架构文件
create_table "events", force: :cascade do |t|
t.string "title"
t.text "description"
t.string "location"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_events_on_user_id"
end
create_table "events_hash_tags", id: false, force: :cascade do |t|
t.integer "event_id"
t.integer "hash_tag_id"
t.index ["event_id"], name: "index_events_hash_tags_on_event_id"
t.index ["hash_tag_id"], name: "index_events_hash_tags_on_hash_tag_id"
end
create_table "hash_tags", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
hashtags
在hash_tags
表格中成功创建,并与events_hash_tags
创建关联。
我想知道如何根据用例来查找趋势hashtags
,例如hash_tags
表上的10个主题标签,然后如何查找大多数事件中使用的hashtag
hashtag
hashtags
DELIMITER //
1}}在10个事件中使用,这是最大的,然后如何以编程方式找到它。
我的问题是如何查找使用最长时间事件的5个趋势;
。
谢谢
答案 0 :(得分:1)
HashTag.all.group('name').count.sort_by {|_key, value| value}.reverse.to_h
将给出数据库中输入的所有哈希标记的排序计数。如果您添加where查询,则可以将搜索范围限制为日,周或其他任何内容。如果您每小时运行一次这样的查询,它会列出该小时最常用或最趋的标签。
答案 1 :(得分:1)
@PatMellon的另一个答案部分正确,原因是@questionnaire在评论中说,答案下面是name
列是唯一的,并且与events_hash_tags
相关联。
我认为您需要关注has_many :through
协会和counter_cache
来计算关联。
然后
@trendings = HashTag.limit(5).order(events_hash_tags_count: :desc)
我认为这会有所帮助