Rails - 内容显示"cooldown"的正确关联/数据模型



我有一个用户模型和一个内容模型。当用户查看一段内容时,我需要确保用户在 48 小时内不会再次看到该内容。

Rails如何对此进行建模?我想有一个表,其中包含记录视图的user_id、content_id和时间戳,然后让工作人员清除时间戳> 2 天的条目。这样,当用户请求更多内容时,我可以筛选出具有user_id和content_id匹配条目的内容。

不要认为这应该重要,但我正在使用MySQL和Rails 3.2。

我认为您可以在模型中执行以下操作。

class User < ActiveRecord::Base
   ...
   has_many :contents, -> {  where(["EXTRACT(HOUR FROM last_viewed_at) > ? OR last_viewed_at IS ?", 48, nil)}
end

我使用或条件使其为零,因为当它初始化或创建新记录时,以便用户能够看到它。

我不确定你如何使用你的工人。

如果我遗漏了什么,请告诉我。我不打算准确地回答,而是尝试一种可以实现可能性的方法。

最新更新