【发布时间】:2012-02-27 16:19:54
【问题描述】:
然后是时候在我们的 Web 应用程序中实现某种成就了。我有一个或多或少类似于这个问题How to implement an achievement system in RoR 中描述的层次结构的想法。
我们正在开发的应用程序是一种软件即服务,旨在在没有软件开发人员的情况下进行外部管理。问题是软件管理员应该可以通过 Web 界面创建新的成就运行时。然后层次结构变成一堵墙。
我在某处读过可以通过有限状态机实现这种情况,但目前我没有足够的关于该主题的信息。
编辑:具体问题
我考虑过用一系列要满足的条件来建模一个成就类。这个基本类 Achievement 将有一个布尔值,它递归地检查所有条件是否有效。然后条件可以是硬编码的类。然后系统管理员使用原子条件的组合创建新的成就。
我担心原子条件的类越来越多。我不想在项目中有 30 多个条件类。任何建议都非常感谢。
编辑:有关实施的更多细节
根据 SpyrosP 的响应,构建所描述的 DSL 似乎是个好主意。然后必须以某种方式将成就保存在数据库中。保持相同的例子:
comments :less_than => 10
check_comments
comments :more_or_equal => 100
award_hundred_comments_badge
为了动态地创建成就,应该有一个表来存储要检查的条件:
Achievement
| id | name |
| 1 | "Houndred Comments" |
Condition
| achievement_id | expression |
| 1 | some sort of condition |
【问题讨论】:
-
StackOverflow 是针对有明确答案的特定编程问题。这个很主观。
标签: ruby-on-rails achievements