Ruby on rails 允许用户设置工作人员完成分配的时间表

Ruby on rails 允许用户设置工作人员完成分配的时间表,ruby-on-rails,ruby,schedule,Ruby On Rails,Ruby,Schedule,我有一个应用程序,允许管理员创建工作分配并分配给帐户上的工作人员。这方面的工作非常好,但我正在尝试为管理员添加一种方法,以设置完成这些任务的时间表。比如多久一次(每周、每月等)以及任务需要多长时间(小时或分钟)。我开始了一点点的建设。基本上,我将赋值属性设置为包括start\u atend\u at和frequency。但我不确定如何处理这些属性。以前有人建立过这样的系统吗?我可以使用哪些好的gems或库来帮助实现这一点?以下是我的作业模式: 模式: 我认为你的方法实际上相当不错。这就是我要做的

我有一个应用程序,允许管理员创建工作分配并分配给帐户上的工作人员。这方面的工作非常好,但我正在尝试为管理员添加一种方法,以设置完成这些任务的时间表。比如多久一次(每周、每月等)以及任务需要多长时间(小时或分钟)。我开始了一点点的建设。基本上,我将赋值属性设置为包括
start\u at
end\u at
frequency
。但我不确定如何处理这些属性。以前有人建立过这样的系统吗?我可以使用哪些好的gems或库来帮助实现这一点?以下是我的作业模式:

模式:
我认为你的方法实际上相当不错。这就是我要做的。我可能会将
frequency
作为枚举类型,只包含某些值,如:“hourly、daily、weekly、monthly、yearly”等。这可以通过在assignment.rb中的模型类中添加以下行轻松实现:

enum frequency: [ :hourly, :daily, :weekly, :monthly, :yearly ]
您定义
start_at
end_at
的方式很好。每当用户访问其工作分配时,您只需对该工作分配执行查询,以确定它是否正在进行、过期或尚未打开

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

enum status: [ :not_started, :in_progress, :finished ]
您需要从表中删除“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

这就是我要做的,但这只是我的观点:)你需要编写代码,通过比较开始和结束时间来确定作业是否正在进行

别忘了给要搜索的任何列添加索引。这可能意味着向account_id和两个枚举添加索引。尽管这取决于你的应用程序的具体操作。good point@Glyoko我已经更新了我的答案,在我建议添加的列上添加了一个索引。
def change
  remove_column :assignments, :finished
  remove_column :assignments, :in_progress
  add_column :assignments, :status, :integer, default: 0

  add_index :assignments, :status
end