2011-11-21 272 views
1

我正在为我制作的iOS应用制作Web应用程序。我想管理我所做的应用程序中的问题,但现在我也希望用户有机会向Web应用程序提交问题。但是,用户的问题不能仅仅添加到列表中,因为我想首先批准它是一个有效的问题。如何制作简单的“批准或拒绝”系统

我想作以下的:

  • 一个页面,用户可以注册并提交问题。
  • 这是由一个单独的后台bean(不同于我在管理面板中使用的)处理的
  • 问题是如此传递给EJB,它再次持续存在问题。
  • 然后我有一个用户提交的问题列表,我可以选择“批准”,这意味着我将有oppertunity将问题保留在批准的问题表中。

通过这种方法,我必须做的问题表(以及答案和类别表)的副本,并有一个前缀或东西(user_submitted_questions例如)

这是一个“好”的方式做到这一点?或者我能做得更好/更有效率吗?

回答

2

我不会重复整个问题。相反,请尝试将status字段添加到Question对象。当问题进入Web应用程序时,它们可以保持提交状态。一旦您查看它们,它们可以更新为已批准或已拒绝。您可以对前端进行编码,仅在公众视图中显示status == APPROVED的问题。

这避免了维护2个问题表/对象的开销(随着系统的发展,现在只需要在添加/删除字段时维护1个表/对象)。批准问题的表现也应该得到改善,因为它只是更新单个字段而不是插入整个新行。如果您的表格增长过快,则始终可以构建清除或移动被拒绝问题的归档(或截断)作业。

+0

+1。与我们的方法非常相似,并且使用status字段允许比“yes”“no”和null更多的选项。 – David

+0

所以我只是添加一个列到问题表(并更新实体),命名为type..VARCHAR的示例状态?然后我有机会设置不同的状态。或者我应该使用其他数据类型,并且我理解它是正确的?谢谢=) – LuckyLuke

+0

是的,我会在问题中添加一列,但是我会让它成为一个字符串(VARCHAR),以便我可以捕获多个状态。现在你有3个:提交,批准,拒绝。可以想象,你会有更多的使用字符串减少重构的需要。在该对象中,可以使用Enum来确保没有无效值持久化到状态列中。 – Chris

1

假设你保存的问题和答案在数据库中...

我们这样做是在我们的系统中,只需有我们命名为“认可”的数据库可为空栏位和相应的时间戳。问题进入时,该值最初为空。

当它被批准或被拒绝时,我们适当地设置位标志,并更新时间戳以显示它何时被批准或拒绝。这比重复表格简单得多。

相关问题