允许用户为工人设置计划以完成任务

时间:2017-02-28 21:50:37

标签: ruby-on-rails ruby schedule

我有一个应用程序,允许管理员创建作业并分配给帐户上的工作人员。这个方面效果很好但是我试图为管理员添加一种方法来设置应该在何时完成这些分配的时间表。像往常一样(每周,每月等等)以及作业需要多长时间(小时或分钟)。我开始了一点这个构建。基本上我将赋值的属性设置为包括start_at end_atfrequency。我不知道如何处理这些属性。以前有人建造过这样的系统吗?我可以用什么好的宝石或图书馆来帮助解决这个问题?这是我的作业模式:

架构:

  create_table "assignments", force: :cascade do |t|
    t.string   "name"
    t.string   "description"
    t.integer  "account_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "attachment"
    t.boolean  "finished",       default: false
    t.integer  "finished_count"
    t.boolean  "in_progress",    default: false
    t.datetime "start_at"
    t.datetime "end_at"
    t.string   "frequency"
  end

1 个答案:

答案 0 :(得分:1)

我认为你的方法实际上非常好。这就是我要做的。我可能会将frequency枚举类型仅包含某些值,例如:'每小时,每天,每周,每月,每年,'这可以通过在assignment.rb中将以下行添加到模型类中来轻松完成:

enum frequency: [ :hourly, :daily, :weekly, :monthly, :yearly ]

您定义start_atend_at的方式很好。每当用户访问他们的作业时,您只需要对作业执行查询,以确定它是在进行中,是否已到期还是尚未打开。

此外,看起来您正在存储两个名为' finished'的布尔值。和' in_progress'。我可能会通过创建另一个名为' status'的枚举类型来简化这些字段。定义如下:

enum status: [ :not_started, :in_progress, :finished ]

您需要删除已完成的'和' in_progress'表格中的列以及添加名为' title'的字段。创建迁移文件并粘贴以下代码以修改表:

def change
  remove_column :assignments, :finished
  remove_column :assignments, :in_progress
  add_column :assignments, :status, :integer, default: 0

  add_index :assignments, :status
end

这就是我要做的,但这只是我的意见:)你需要通过比较开始和结束来编写如何确定作业是否正在进行编码的代码倍。