在日期和时间后使帖子处于非活动状态
Making posts inactive after a date and time
我必须让创建这些 post 的用户在给定日期和时间后将其设为非活动状态。我添加了一个布尔字段 "published" 来使 post 处于活动状态或不活动状态。
如果 post 处于活动状态,每个访问者都会看到 post。如果它处于非活动状态,post 将在用户仪表板中显示为非活动状态。
对于你们来说,在给定的日期时间过去后使 post 不活动的最佳方法是什么?那应该是自动的,但我不认为合适的方法是使用 Active Job 和 ;
- 检查数据库中的所有 post 是否处于活动状态,
- 如果激活,比较给定日期时间和当前日期时间
- 如果需要,将其设为非活动状态
我正在使用 heroku,所以这会让我的工作人员一直很忙。
如果您只是打算获取和显示 posts,而不是设置布尔值,您可以只向模型添加一个范围:
scope :published, -> { where('publish_at < ?', Time.now) }
然后像这样使用Post.published
如果有帮助请告诉我。
更新 1:
如果您需要确定 post 是否处于活动状态,请像这样向模型添加一个方法,
def active?
self.publish_at < Time.now
end
你可以做一些事情:
选项 1:
根据@jawad-khawaja 的回答,我认为更好的方法是使用 expired_at
而不是 published_at
因为对我来说,发布日期是 post 可供人们使用。这样用户就可以为自己的post定义一个到期日期(不是相同的发布日期)。
这里有一些示例,您可以如何根据到期日期
获取 active/inactive post
# active posts
scope :published, -> { where('expired_at > ?', Time.now) }
# inactive posts
scope :unpublished, -> { where('expired_at < ?', Time.now) }
选项 2:
如果您有一个属性 published
作为布尔值并且您确实需要自动标记它,选项是使用 whenever gem
此选项的缺点:
- 您将有两个属性表示同一事物:
published
作为布尔值,expiration_datetime
作为日期时间
- 如果过期日期的最小单位是分钟,则需要每分钟检查是否每未过期 post进入过期状态。您的服务器可能会过载。
结论:
我推荐的方法是选择选项1。
我必须让创建这些 post 的用户在给定日期和时间后将其设为非活动状态。我添加了一个布尔字段 "published" 来使 post 处于活动状态或不活动状态。
如果 post 处于活动状态,每个访问者都会看到 post。如果它处于非活动状态,post 将在用户仪表板中显示为非活动状态。
对于你们来说,在给定的日期时间过去后使 post 不活动的最佳方法是什么?那应该是自动的,但我不认为合适的方法是使用 Active Job 和 ;
- 检查数据库中的所有 post 是否处于活动状态,
- 如果激活,比较给定日期时间和当前日期时间
- 如果需要,将其设为非活动状态
我正在使用 heroku,所以这会让我的工作人员一直很忙。
如果您只是打算获取和显示 posts,而不是设置布尔值,您可以只向模型添加一个范围:
scope :published, -> { where('publish_at < ?', Time.now) }
然后像这样使用Post.published
如果有帮助请告诉我。
更新 1:
如果您需要确定 post 是否处于活动状态,请像这样向模型添加一个方法,
def active?
self.publish_at < Time.now
end
你可以做一些事情:
选项 1:
根据@jawad-khawaja 的回答,我认为更好的方法是使用 expired_at
而不是 published_at
因为对我来说,发布日期是 post 可供人们使用。这样用户就可以为自己的post定义一个到期日期(不是相同的发布日期)。
这里有一些示例,您可以如何根据到期日期
获取 active/inactive post# active posts
scope :published, -> { where('expired_at > ?', Time.now) }
# inactive posts
scope :unpublished, -> { where('expired_at < ?', Time.now) }
选项 2:
如果您有一个属性 published
作为布尔值并且您确实需要自动标记它,选项是使用 whenever gem
此选项的缺点:
- 您将有两个属性表示同一事物:
published
作为布尔值,expiration_datetime
作为日期时间 - 如果过期日期的最小单位是分钟,则需要每分钟检查是否每未过期 post进入过期状态。您的服务器可能会过载。
结论:
我推荐的方法是选择选项1。