Rails – 我想通过放置特定时间来更改我的 table 的状态?

Rails – I want to change the status of my table by putting a certain time?

我进入 RoR 的时间很短。

我有一个列表 table,其中包含一个字段:status(enabled, disabled) 和 end_date,我有我的表单,其中放置了特定的结束时间。 我希望在到达此结束时间时,状态字段更改为禁用。 有什么我可以做的吗?

create_table "lists", force: :cascade do |t|
t.integer "user_id"
t.binary "uuid", limit: 36
t.string "name"
t.string "description"
t.datetime "end_date"
t.integer "status", default: 1
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_lists_on_user_id"

结束

您可以创建一个方法来检查结束时间是否与当前日期相同,然后设置状态值

def self.update_status
  List.where(end_date: DateTime.current).update_all(status: 'disabled')
end

现在您可以根据需要每分钟、每小时或每天从调度程序调用此方法 运行 此方法。 结帐whenever gem 编写计划作业很受欢迎。

every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot 
  runner "List.update_status"
end