如何根据Ruby on Rails中的用例查找趋势标签

时间:2018-05-16 07:12:57

标签: ruby-on-rails ruby

首先,这是我的架构文件

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

hashtagshash_tags表格中成功创建,并与events_hash_tags创建关联。

我想知道如何根据用例来查找趋势hashtags,例如hash_tags表上的10个主题标签,然后如何查找大多数事件中使用的hashtag hashtag hashtags DELIMITER // 1}}在10个事件中使用,这是最大的,然后如何以编程方式找到它。

我的问题是如何查找使用最长时间事件的5个趋势;

如果我不能解释清楚,那就是Perdon。

谢谢

2 个答案:

答案 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)

我认为这会有所帮助