Rails -我想通过放置一定的时间来改变我的表的状态?



我只在RoR呆了很短的时间。

我有一个列表表与字段:状态(启用,禁用)和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

现在您可以从调度器中调用该方法,以便根据您的要求每分钟、每小时或每天运行该方法。

每当gem写入计划作业时,就签出它。
every :hour do # Many shortcuts available: :hour, :day, :month, :year, :reboot 
runner "List.update_status"
end

最新更新