2012-07-27 68 views
0

我有一个Rails网站有三个表格:用户,任务和TaskInstance。任务表就像任务的主要列表,不与任何特定的用户耦合,而TaskInstance表包含指示用户完成特定任务的记录。换句话说,TaskInstance具有用户标识,任务标识和完成状态(布尔值)。用户有很多TaskInstances。将新数据添加到数据库的最具可扩展性的方法?

我想让管理员添加新的任务。这样做应该为每个用户为该任务创建一个新的TaskInstance。但是,这听起来不像是会很好地扩展。假设我有五万个用户,创建一个新的任务需要立即创建五万个TaskInstances。

如果某种延迟加载可以完成,那将是一件好事,但我不知道该怎么做。我可以在登录时做到这一点。当用户登录时,检查是否创建了新的任务;如果是这样,请仅为该特定用户创建一个新的TaskInstance。但是那么在新任务创建时已经登录的用户呢?

我想我只是想知道这种问题的首选方法是什么。

如果需要,可将其移至社区wiki。

+0

如果该用户没有对Task执行任何操作,则他没有TaskInstance。那么为什么要创建一个前期?只有在需要保存的情况下才能创建实例。 – 2012-07-27 09:18:38

+0

但我希望能够向用户展示他们已完成和未完成的任务。如果特定任务不存在TaskInstance,我将如何显示该任务的完成状态? – 2012-07-27 09:34:03

+2

只要检查用户的TaskInstance是否已经存在 - 如果不存在,那么用户还不能完成它。 – klaffenboeck 2012-07-27 09:34:51

回答

2

不要直接创建TaskInstance,而只能在需要时才创建。由于无论如何都会创建新的Task,因此无论是否存在TaskInstance,它都可以显示给任何用户。只要用户决定以Task开头,TaskInstance应该被实例化。

相关问题