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" 选项的有效方法吗?
Post.rb
validates :act_status, inclusion: { in: %w(padding activate finish) }
您不需要任何这些 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
我想在典型日期(由用户安排)激活 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" 选项的有效方法吗?
Post.rb
validates :act_status, inclusion: { in: %w(padding activate finish) }
您不需要任何这些 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