ruby rails 在典型日期激活 post

ruby on rails activate post on typical date

我想在典型日期(由用户安排)激活 post 并更新模型中的数据

例如。

Post schema
t.string :title
t.text :body
t.datetime :valid_from
t.datetime :valid_until
t.string :act_status, default: "padding #["pending", "activate", "expired"]

每个 post 都有 valid_from、valid_until 和 act_status

act_status 有 3 个阶段(待定、激活和过期)

用户填写所有信息,

当"Time.now"遇到"valid_from"时,post对所有用户有效,"act_status"变为"activate"(@post.act_status = "activate")

当"Time.now"遇到"valid_until"时,post对其他用户无效,"act_status"变为"expired"(@post.act_status = "expired")


我的问题是,rails 如何在典型日期自动更改值。

在我看来,我可以在 "user" 执行某项操作时更改值(触发某些操作,例如 CRUD)

但在我的例子中,用户只是保存值,rails 应该触发该操作。

我不知道如何解决它。

如果您有任何说明或指南,请告诉我

谢谢..


您不需要任何这些 act_status,只需创建范围并显示您想要的项目。

# in your model
scope :pending, -> { where('valid_until < now()') }
scope :active, -> { where('now() between valid_from AND valid_to') }
scope :expired, -> { where('valid_from > now()') }


# in your controller
@pending_posts = Post.pending
@active_posts = Post.active
@expired_posts = Post.expired